Si iscriva ai Webhooks per ricevere notifiche sui messaggi che la Sua attività riceve e sugli aggiornamenti dei profili dei clienti.
Ogni volta che si verifica un evento trigger, la piattaforma WhatsApp Business rileva l'evento e invia una notifica a un URL Webhook precedentemente specificato. È possibile ricevere due tipi di notifiche:
Ogni volta che viene ricevuto un nuovo messaggio, viene chiamato l'evento OnMessageReceived, tramite il quale è possibile accedere al contenuto del messaggio e contrassegnarlo come letto.
Di seguito è riportato un esempio in cui, quando viene ricevuto un nuovo messaggio di testo, viene rimandato all'utente che lo ha inviato.
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;
La piattaforma WhatsApp Business invia notifiche per informare dello stato dei messaggi scambiati tra Lei e gli utenti. Quando un messaggio viene inviato con successo, riceve una notifica quando il messaggio viene inviato, consegnato e letto. L'ordine di queste notifiche nell'applicazione potrebbe non riflettere l'effettiva tempistica dello stato del messaggio. Visualizzare il timestamp per determinare la tempistica, se necessario.
Ogni volta che viene ricevuto un nuovo stato, viene chiamato l'evento 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;