【问题标题】:Twillio - get contents of incoming SMSTwilio - 获取传入短信的内容
【发布时间】:2020-01-17 18:26:45
【问题描述】:

我正在关注Twillio's guide on responding to incoming SMS

一切都按预期进行。我正在获取 webhook,回复将发送到经过验证的号码(我使用的是试用帐户)。

我遇到的问题是获取传入消息的内容。我试图通过$_POSTphp://input 获取内容,但两者都是空的。我想获取内容以便发送到我们的信息邮箱。

这是我的replyToSMS.php:

<?php
require __DIR__ . '/twilio-php-master/src/Twilio/autoload.php';
use Twilio\TwiML\MessagingResponse;

$rest_json = file_get_contents("php://input");
$sms = json_decode($rest_json, true);


$fh = fopen("log_post.txt","w");
foreach($sms as &$item) {
    fwrite($fh, $item) or die("died");
}
fclose($fh);

$response = new MessagingResponse();
$response->message("The Robots are coming! Head for the hills!");
print $response;

?>

我遵循了SO post 和 Twillio 布道者的建议,但我找不到在 php 代码级别而不是 XML 级别上显示内容的方法

我在这里错过了什么?

【问题讨论】:

  • 那些文档显示传入消息在$_REQUEST['Body'] 中。运气好吗?
  • @ceejayoz 感谢您指出这一点。不知道我怎么错过了。终于设法获取传入短信的内容并记录下来。
  • 很高兴有帮助。它位于$_REQUEST 而不是$_POST 的可能原因是您在Twilio 控制台中设置了端点以接受GET 请求而不是POST 请求。你可能想要调整它。
  • webhook 配置为发送 post 请求。这就是我在 ngrok 日志中实时看到的以及我在 Twillio 调试器中看到的。所以我立即认为它会在帖子中发布。但现在一切都好,感谢@ceejayoz。

标签: php sms twilio webhooks


【解决方案1】:

非常感谢@ceejayoz 指出了答案。文档提到$_REQUEST['Body'] 包含传入消息的内容。

所以它既不在$_POST 也不在php://input。它位于 $_REQUEST 中,该对象包含 Twillio webhook 在向您的服务器端点发送 API 请求时发送的所有数据。

这些是 Request 对象包含的字段:

ApiVersion: "2010-04-01"
SmsSid: "**********************************************"
SmsStatus: "received"
SmsMessageSid: "*******************************************"
NumSegments: "1"
From:"+1*************"
ToState: "NY"
MessageSid"***************************************"
AccountSid: "*********************************"
ToZip: ""
FromCountry: "US"
ToCity: ""
FromCity: ""
To: "+1**********"
FromZip: ""
Body: "Test"
ToCountry: "US"
FromState: ""
NumMedia: "0"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 2012-04-11
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多