WhatsApp 接收消息和状态通知

订阅 Webhook,以接收您企业收到的消息及客户资料更新的通知。

 

每当触发事件发生时,WhatsApp Business Platform 会检测到该事件,并向您事先指定的 Webhook URL 发送通知。您可以收到两种类型的通知:

 

 

 

 

已接收消息

每次收到新消息时,都会调用事件 OnMessageReceived,您可以在其中访问消息内容并将其标记为已读。

 

以下示例中,当收到新的文本消息时,将其回显给发送方。

 


procedure OnWhatsAppMessageReceived(Sender: TObject; const aMessage: TsgcWhatsApp_Receive_Message; var aMarkAsRead: Boolean);
var
  vText: string;
  vTo: string;
begin
  if aMessage.Contacts.Count > 0 then
  begin
    vTo := aMessage.Contacts.Contact[0].WaID;
    if aMessage.Messages.Count > 0 then
    begin
      if aMessage.Messages._Message[0]._Type = wapmrtText then
      begin
        vText := 'ECHO ==> ' + aMessage.Messages._Message[0].Text.Body;
        WhatsApp.SendMessageText(vTo, vText);
        aMarkAsRead := True;
      end;
    end;
  end;
end;

 

 

已发送的消息

WhatsApp 商业平台会发送通知,告知您与用户之间消息的状态。当消息发送成功后,您会在消息发送、投递和阅读时各收到一条通知。这些通知在您的应用程序中出现的顺序可能不反映消息状态的实际时间。如有必要,请查看时间戳以确定时间。

 

 

每次收到新状态时,将调用 OnMessageSent 事件。

 


procedure OnWhatsAppMessageSent(Sender: TObject; const aMessage: TsgcWhatsApp_Receive_Message; aStatus: TsgcWhatsAppSendMessageStatusType);
begin
  vPhone := aMessage.MetaData.DisplayPhoneNumber;
  case aStatus of
    wapsmstSent: DoLog('Message to ' + vPhone + ' sent.');
    wapsmstDelivered: DoLog('Message to ' + vPhone + ' delivered.');
    wapsmstRead: DoLog('Message to ' + vPhone + ' read.');
    else
      DoLog('Message to ' + vPhone + ' unknown status.')
  end;
end;