ビジネスが受信したメッセージとカスタマープロフィールの更新に関する通知を受け取るには Webhook にサブスクライブします。
トリガーイベントが発生するたびに、WhatsApp Business Platform はそのイベントを検出し、事前に指定した Webhook URL に通知を送信します。2 種類の通知を受け取ることができます:
新しいメッセージが受信されるたびに 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 Business Platform はユーザーとの間のメッセージステータスを通知します。メッセージが正常に送信されると、メッセージが送信、配信、既読になったときに通知を受け取ります。アプリ内でのこれらの通知の順序は、メッセージステータスの実際のタイミングを反映しない場合があります。必要に応じてタイムスタンプを確認してタイミングを判断してください。
新しいステータスを受信するたびに、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;