У меня есть следующий код, и он отправляет SMS-уведомления на мой телефон:
$notification = $twilio->notify->services($serviceSid)
->notifications->create([
'toBinding' => $batch,
'body' => $txt,
'statusCallback' => 'http://postb.in/b/jarblegarble' // <-- this doesn't work
]);
Однако, хотя отправка работает, я не могу понять их обратные вызовы.
Я просматриваю их документы и не могу найти, как установить URL-адрес обратного вызова. Я вижу, что некоторые из их ресурсов используют «url», в то время как другие используют «statusCallback» (черт возьми, один, кажется, использует «перенаправление»). При этом я не могу публиковать сообщения на postb.in, используя их - должен быть способ проверить статус моего уведомления.
В вашем примере statusCallback
параметр API службы SMS физическое лицо передается в API уведомления универсальный. Это смешивание не сработает. Отдельная служба SMS устанавливает обратный вызов для этого конкретного сообщения, что неэффективно для пакетной отправки. Универсальный API уведомлений, напротив, полагается на веб-хуки, которые глобально настраиваются для каждой службы.
В вашем случае проще всего использовать индивидуальный API службы SMS:
$message = $twilio->messages->create('+15551234567', [ 'body' => 'Hi',
'from' => '+15559876543',
'statusCallback' => 'http://postb.in/b/jarblegarble' ]);
Чтобы использовать универсальный API уведомлений, вам необходимо настроить PostWebhookUrl
на целевой URL-адрес при создание службы уведомлений и настроить код на этом URL-адресе для обработки сообщений onMessageSent
. Подробнее см. Выше по URL-адресу "веб-хуков".
Caveat emptor: я не пробовал ничего из этого, и я не использовал Twilio буквально восемь лет, но вышесказанное является моим теоретическим пониманием.
Получается, что я был неправ по двум причинам.
1) URL-адрес обратного вызова необходимо передать в службу обмена сообщениями следующим образом:
$notification = $twilio->notify->services($serviceSid)
->notifications->create([
'toBinding' => $bindings,
'body' => $txt,
'sms' => ['status_callback' => 'http://your_callback_url' ]
]);
2) postb.in не работал! Я тестировал приведенный выше код, после того, как служба поддержки twilio заверила его, что он действителен, я решил попробовать опубликовать его на своем собственном сервере и просто захватить POST-контент. Конечно, это сработало, как они и предполагали.
Обновлено: в то время мне было непонятно, но URL-адрес обратного вызова будет вызываться для каждого SMS, отправленного для каждого обновления статуса. Это означает поставку в очередь, отправку и доставку. Сначала я думал, что просто получу обновление статуса для самого пакета, поскольку мне не обязательно заботиться о статусе до 10 000 текстовых сообщений.
Я установил URL-адрес status_callback, но не получил никаких данных в $ _REQUEST.
Тогда мне придется взглянуть на глобальные вебхуки! Системе необходимо отправлять сообщения пакетами, поэтому установка индивидуальных обратных вызовов не идеальна (а необходимость одного вызова API для каждого номера может занять много времени и тайм-аут). Спасибо за направление.