如何在解析服务器上配置 Twilio?
Posted
技术标签:
【中文标题】如何在解析服务器上配置 Twilio?【英文标题】:How to configure Twilio on parse server? 【发布时间】:2016-04-06 21:22:22 【问题描述】:我正在尝试将 Twilio 合并到我的应用程序中,该应用程序运行在使用 Heroku 和 MongoLab 部署的解析服务器上。我正在尝试通过在我的 cloud/main.js 文件中使用此代码进行配置
var twilio = require("twilio");
twilio.initialize("87se46bovanw4v5aiwy4o57","ia8o57awyov57yn875vyboe");
Parse.Cloud.define("inviteWithTwilio", function(request, response)
// Use the Twilio Cloud Module to send an SMS
twilio.sendSMS(
From: "6543211234",
To: 8065456703,
Body: "Start using Parse and Twilio!"
,
success: function(httpResponse) response.success("SMS sent!"); ,
error: function(httpResponse) response.error("Uh oh, something went wrong");
);
);
但是,我得到了这个响应
UserInfo=NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set. [NSDebugDescription: JSON text did not start with array or object and option to allow fragments not set.]
在尝试初始化 Twilio 时,我已确定问题出在前两行。我认为这是因为 Twilio Cloud Module
没有像 Parse Hosted 云代码那样集成到我的解析服务器中,但我不确定。我该如何解决这个问题?感谢您的宝贵时间。
【问题讨论】:
您是否已将 Twilio 模块安装到您的应用程序中?npm install twilio --save
。另外,您显示的错误看起来像是来自 ios,您是否有更多关于错误发生在服务器中的位置的信息?
只要云端的某些内容不正确,我就会收到该错误。而且我还没有安装 twilio 模块,但是,我的服务器是通过带有 heroku 的 github 的 web 版本部署的(我没有使用命令行工具)。安装这个会有影响吗?
【参考方案1】:
这里是 Twilio 开发者宣传员。
听起来,从我们在 cmets 中的对话来看,您还没有安装 Twilio npm module。在 Parse 上,您不必安装该模块,因为它默认包含在内。要通过 Parse 服务器使用 Twilio 模块,您需要安装它。
要安装模块,请在终端中打开您的应用程序并输入:
$ npm install twilio --save
--save
标志很重要,因为它将依赖项保存到您的package.json
文件中。签入更新的package.json
并再次部署您的代码。现在,当部署到 Heroku 时,将安装 npm 模块,包括 Twilio 模块。
已经回答的马林说得很好。我还建议使用twilio.sendMessage
。它使用更新且功能更好的 Messages resource(而不是已弃用的 SMS 资源)。
让我知道这是否有帮助。
【讨论】:
万岁!希望您的应用程序的其余部分一切顺利。【参考方案2】:我认为这是 Twilio 版本的问题。
你应该使用 twilio.sendMessage。
var twilio = require("twilio");
twilio.initialize("87se46bovanw4v5aiwy4o57","ia8o57awyov57yn875vyboe");
Parse.Cloud.define("inviteWithTwilio", function(request, response)
// Use the Twilio Cloud Module to send an SMS
twilio.sendMessage(
From: "6543211234",
To: 8065456703,
Body: "Start using Parse and Twilio!"
,
success: function(httpResponse) response.success("SMS sent!"); ,
error: function(httpResponse) response.error("Uh oh, something went wrong");
);
);
希望能帮到你。
谢谢
/////////////////////////////
这是我的代码工作正常。
Parse.Cloud.define("sendSMS", function(request, response)
console.log(request);
var twilio = require("twilio")("ACCOUNT_SID","AUTH_TOKEN");
twilio.sendMessage(
to: request.params.number,
from: request.params.from,
body: request.params.message
, function(err, responseData)
if (err)
response.error(err);
else
response.success("SMS sent.");
);
);
【讨论】:
我试过了,还是同样的问题。我认为这不是问题,因为即使我不调用云功能,我也会得到响应。但是,如果我将前两行注释掉,服务器将正常运行。 您的代码在解析服务器上的 cloud/main.js 中吗? ////////// 是的。/////////// to 和 from 值是字符串还是整数?如果它们是字符串,它们是什么格式的? 它们是字符串类型。以上是关于如何在解析服务器上配置 Twilio?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过服务器websocket将twilio sms传递到客户端
Twilio Conversations - 范围对话和消息服务 - 如何连接?
为啥我不能使用 serveo 而不是 ngrok 来隧道连接到托管在 EC2 服务器上的 mvc 应用程序以在 Twilio 上接收 SMS