Como funciona o WebHook de mensagens recebidas?

A primeira coisa que você precisa fazer é ativar 'Leitura Recebida' na gaveta de navegação. Você pode fazer isso seguindo este guia .
Você precisa criar um script como sugerido na seção WebHook Example Script da página da API no seu Painel de Administração e carregá-lo no seu servidor. Basta fornecer sua URL no formulário Add WebHook na página da API e clicar no botão Save. Agora, sempre que você receber uma mensagem no seu dispositivo, esse script será executado automaticamente.
Lembre-se, você não pode executar o script WebHook diretamente. Não vai funcionar.
Aqui está um exemplo detalhado de como adicioná-lo.
[1] Faça login no seu Painel de Administração e abra a página da API. Você verá uma seção chamada "Webhook Example Script" conforme mostrado na captura de tela abaixo.
[2] Basta copiar todo o texto dentro desta seção. Agora crie um arquivo PHP chamado "hook-example.php" na raiz do seu servidor, e cole todo o texto que você copiou daquela seção neste arquivo.
[3] Agora, para fazer funcionar, você tem que adicionar a URL do arquivo que criamos. Basta fazer login no seu Painel de Administração e abrir sua página de API. Você verá uma seção chamada "Adicionar Webhook para mensagens recebidas". Basta digitar a URL para "hook-example.php" no formulário e pressionar salvar, conforme mostrado abaixo. É recomendado fornecer uma URL segura (começa com https://) se a URL do seu servidor também for uma URL segura.
[4] Agora você deve ativar o "Read Received" no aplicativo móvel, conforme mostrado aqui , caso ainda não tenha feito isso.
Agora, sempre que você receber a mensagem no seu dispositivo registrado na conta do SMS Gateway onde você adicionou este webhook, o script do webhook será chamado automaticamente.
Exemplo de Script WebHook
Criar script com o seguinte conteúdo e gerar URL como WebHook.
define("API_KEY", "58a894148c1933ebdf387182a638044d2ec1bffd"); try { if (isset($_SERVER["HTTP_X_SG_SIGNATURE"])) { if (isset($_POST["messages"])) { $hash = base64_encode(hash_hmac('sha256', $_POST["messages"], API_KEY, true)); if ($hash === $_SERVER["HTTP_X_SG_SIGNATURE"]) { $messages = json_decode($_POST["messages"], true); /** * For example :- * $messages = [ * 0 => [ * "ID" => "1", * "number" => "+11234567890", * "message" => "This is a test message.", * "deviceID" => "1", * "simSlot" => "0", * "userID" => "1", * "status" => "Received", * "sentDate" => "2018-10-20T00:00:00+02:00", * "deliveredDate" => "2018-10-20T00:00:00+02:00" * "groupID" => null * ] * ] * * senDate represents the date and time when the message was received on the device. * deliveredDate represents the date and time when the message was received by the server. */ foreach ($messages as $message) { if(strtolower($message["message"]) === "hi") { // Reply to message using API or execute some commands. Possibilities are limitless. } } } else { throw new Exception("Signature don't match!"); } } else if (isset($_POST["ussdRequest"])) { $hash = base64_encode(hash_hmac('sha256', $_POST["ussdRequest"], API_KEY, true)); if ($hash === $_SERVER["HTTP_X_SG_SIGNATURE"]) { $ussdRequest = json_decode($_POST["ussdRequest"]); $deviceID = $ussdRequest->deviceID; $simSlot = $ussdRequest->simSlot; $request = $ussdRequest->request; $response = $ussdRequest->response; // Do whatever you want with data you received. } else { throw new Exception("Signature don't match!"); } } } else { http_response_code(400); error_log("Signature not found!"); } } catch (Exception $e) { http_response_code(401); error_log($e->getMessage()); }
______