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ń:
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;
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;