WhatsApp — odbieranie wiadomości i powiadomień o statusie

Subskrybuj Webhooki, aby otrzymywać powiadomienia o wiadomościach odbieranych przez firmę oraz aktualizacjach profilu klienta.

 

Za każdym razem, gdy nastąpi zdarzenie wyzwalające, platforma WhatsApp Business wykrywa je i wysyła powiadomienie na uprzednio podany adres URL webhooka. Możliwe są dwa typy powiadomień:

 

 

 

 

Odebrane wiadomości

Za każdym razem, gdy zostanie odebrana nowa wiadomość, wywoływane jest zdarzenie OnMessageReceived, w którym można uzyskać dostęp do treści wiadomości i oznaczyć ją jako przeczytaną.

 

Poniżej znajduje się przykład: po otrzymaniu nowej wiadomości tekstowej jest ona odsyłana do użytkownika, który ją wysłał.

 


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;

 

 

Wysłane wiadomości

Platforma WhatsApp Business wysyła powiadomienia informujące o statusie wiadomości między użytkownikiem a innymi użytkownikami. Gdy wiadomość zostanie pomyślnie wysłana, otrzymuje się powiadomienie o jej wysłaniu, dostarczeniu i przeczytaniu. Kolejność tych powiadomień w aplikacji może nie odzwierciedlać rzeczywistego czasu zmiany statusu wiadomości. W razie potrzeby należy sprawdzić znacznik czasu, aby określić moment zdarzenia.

 

 

Za każdym razem, gdy zostanie odebrany nowy status, wywoływane jest zdarzenie 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;