WhatsApp メッセージの受信とステータス通知

ビジネスが受信したメッセージとカスタマープロフィールの更新に関する通知を受け取るには 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;