使用twilio的php notify API时,如何设置回调URL?

When using twilio's php notify API, how do you set your callback URL?

我有以下代码,它会向我的 phone 发送短信通知:

$notification = $twilio->notify->services($serviceSid)
                                    ->notifications->create([
                                        'toBinding' => $batch,
                                        'body' => $txt,
                                        'statusCallback' => 'http://postb.in/b/jarblegarble' // <-- this doesn't work
                                    ]);

然而,即使发送有效,我似乎无法弄清楚他们的回调。

我正在搜索他们的文档,但找不到如何设置回调 URL。我看到他们的一些资源使用 "url",而其他资源使用 "statusCallback"(见鬼,有人似乎使用 "redirect")。话虽如此,我似乎无法 post 到 postb.in 使用它们——必须有一种方法来检查我的通知状态。

您的示例通过了 statusCallback parameter of the individual SMS service API to the universal notify API. This mixing won't work. The individual SMS service sets up a callback for that one particular message, which isn't efficient for batch sends. The universal notify API, in contrast, relies on web hooks,这是针对每个服务进行全局配置的。

在您的情况下,最简单的做法是使用个人 SMS 服务 API:

$message = $twilio->messages->create('+15551234567', [ 'body' => 'Hi',
    'from' => '+15559876543',
    'statusCallback' => 'http://postb.in/b/jarblegarble' ]);

要使用通用通知 API,您需要在 创建 通知时将 PostWebhookUrl 设置为目标 URL服务,并安排 URL 处的代码处理 onMessageSent 消息。更多内容见上方 "web hooks" URL。

买者自负:这些我都没试过,我也八年没用过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。所以这意味着排队、发送和交付。我最初以为我只是获取批处理本身的状态更新,因为我不一定关心最多 10,000 条 txt 消息的状态。