订阅 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;