如何在解析服务器上配置 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?的主要内容,如果未能解决你的问题,请参考以下文章

带有解析服务器问题的 Twilio

Twilio Video Javascript在服务器上

在 Heroku Parse 服务器上安装 Twilio

如何通过服务器websocket将twilio sms传递到客户端

Twilio Conversations - 范围对话和消息服务 - 如何连接?

为啥我不能使用 serveo 而不是 ngrok 来隧道连接到托管在 EC2 服务器上的 mvc 应用程序以在 Twilio 上接收 SMS