每个人都在这里使用whispir API吗?
我正在尝试使用他们的回调功能,但它无法正常工作。根据他们的文档http://developer.whispir.com/docs/read/Whispir_API_Callbacks回调是通过发送http请求
来触发的HTTP 1.1 POST http://api.whispir.com/messages?apikey=<yourkey>
Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/vnd.whispir.message-v1+xml
请注意我使用的是laravel 4.2
private static function curl_post($url, $username, $password, $curl_data)
{
$options = array(
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_AUTOREFERER => TRUE,
CURLOPT_CONNECTTIMEOUT => 90,
CURLOPT_TIMEOUT => 90,
CURLOPT_MAXREDIRS => 10,
CURLOPT_URL => $url,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => array(
'Authorization: Basic cGhwZGV2YWxwaGE6cGx1c3BsdXMxMjM=',
'Content-Type: application/vnd.whispir.message-v1+json'
),
CURLOPT_ENCODING => "",
CURLOPT_USERAGENT => "'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13')",
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $curl_data,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_VERBOSE => 1,
CURLOPT_USERPWD => $username . ":" . $password
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$data = curl_exec($ch);
if(curl_errno($ch))
throw new Exception(curl_error($ch));
curl_close($ch);
return $data;
}
private static function sendMessage( $to, $subject, $body )
{
$host = $_ENV['SMS_HOST'];
$apikey = $_ENV['SMS_APIKEY'];
$username = $_ENV['SMS_USERNAME'];
$password = $_ENV['SMS_PASSWORD'];
$data = array(
"to" => $to,
"subject" => $subject,
"body" => $body,
"callbackId" => "callback"
);
$json = json_encode($data);
return Smscenter::curl_post( $host.$apikey, $username, $password, $json );
}
请评论任何澄清。
答案 0 :(得分:2)
当您使用Whispir API发送的邮件发生响应时,会触发Whispir回调。
因此,您的代码将发送消息,其中包含应该使用哪个回调的引用,并且通过Whispir的任何响应都将触发此回调。
$data = array(
"to" => $to,
"subject" => $subject,
"body" => $body,
"callbackId" => "callback"
);
上面的代码是正确的。只要在Whispir中,您已经配置了名为回调的回调。
e.g。
一旦你在Whispir中创建了回调,并发送了附加了此callbackId的出站消息,对此消息的任何响应都将导致Whispir向您的URL发起POST请求。
此请求的正文如下:
HTTP 1.1 POST http://mycallbackserver.com/mycallback
Content-Type: application/json
X-Whispir-Callback-Key: some-auth-code
{
"messageId": "ABC4857BCCF484575FCA",
"location" : "https://api.whispir.com/messages/ABC4857BCCF484575FCA",
"from":{
"name":"Fred Waters",
"mri":"Fred_Waters.528798.Sandbox@Contact.whispir.com",
"mobile":"04xxxxxxxx",
"email":"test@test.com",
"voice":"03xxxxxxxx"
},
"responseMessage":{
"channel":"SMS",
"acknowledged":"09/01/15 13:22",
"content":"Yes, I accept. Will I need to bring steel cap boots?"
}
}
您的应用程序可以捕获此回调并解析它以获取responseMessage内容。
这应该在您的应用程序中启动并运行回调。
注意:
首先,如果您还为CURLOPT_HTTPHEADER提供了'Authorization'参数,我认为您不需要设置CURLOPT_USERPWD。他们基本上做同样的事情所以我会选择CURLOPT_USERPWD选项。
其次,由于您刚刚播放了授权标题,我建议您从此帖子中删除它,然后更改密码。
最后,我是Whispir.io的产品经理,所以如果您有任何其他问题,请随时通过电子邮件发送至support@whispir.io,我们可以帮助您。
约旦