VoIP.ms 提供了从其API发送SMS文本消息的功能。它们提供了以下示例代码:
<?
$postfields = array(
'api_username'=>'john@domain.com',
'api_password'=>'password',
'method'=>'getServersInfo',
'server_pop'=>'1'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_URL, "https://voip.ms/api/v1/rest.php");
$result = curl_exec($ch);
curl_close($ch);
$data=json_decode($result,true);
echo "<pre>";
print_r($data);
echo "</pre>";
?>
当我在终端的命令行中执行以下命令时,我能够成功地从www.example.com发送SMS文本消息VoIP.ms:
curl -X POST -F 'api_username=john@domain.com' -F 'api_password=password' -F 'method=sendSMS' -F 'did=1234567890' -F 'dst=0987654321' -F 'message=Hello' https://voip.ms/api/v1/rest.php
通过在Google上搜索,我拼凑了以下Google Apps脚本:
function sendSMS() {
var formData = {
api_username : "john@domain.com",
api_password : "password",
method : "sendSMS",
did : 1234567890,
dst : 0987654321,
message : "Hello"
};
var options = {
method : "POST",
payload : formData
};
UrlFetchApp.fetch("https://voip.ms/api/v1/rest.php", options);
}
当我运行脚本时,我得到以下错误:
异常错误:对https://voip.ms的请求失败,返回代码500。截断的服务器响应:(<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">使用muteHttpExceptions选项来检查完整的响应)Code.gs:14
有什么建议吗?
1条答案
按热度按时间laximzn51#
我相信你的目标如下。
修改点:
did : 1234567890
和dst : 0987654321
应该是did : "1234567890"
和dst : "0987654321"
。-F
。在本例中,请求头的内容类型是multipart/form-data
。不幸的是,UrlFetchApp使用application/x-www-form-urlencoded
作为默认内容类型。当这些要点反映在Google Apps脚本中时,下面的修改如何?
修改的脚本:
注:
https://voip.ms/api/v1/rest.php
可以从Google端访问,并且您的formData
的值是有效的值。multipart/form-data
的请求正文会在内部服务器端自动创建。但是,如果此请求正文无法用于您的API(有时会出现此请求正文无法使用的情况。),请使用FetchApp (Author: me)测试请求。参考编号: