【问题标题】:Twilio not sending SMS inside firebase cloud functionTwilio 不在 Firebase 云功能中发送短信
【发布时间】:2020-01-06 21:10:10
【问题描述】:

我正在尝试通过 firebase 云功能使用 twilio api for node.js 发送短信,但未发送短信。但是,如果我将相同的代码作为独立的 java 脚本代码运行,那么它可以正常工作。有人可以吗 请帮助为什么在firebase云功能中没有发生这种情况。代码附在下面:

const functions = require('firebase-functions');

const admin = require('firebase-admin');
admin.initializeApp();
exports.sendNotfication = functions.database.ref('/kakuh/{pushId}/firstName')
    .onCreate((snapshot, context) => {
      const original = snapshot.val();
      const accountSid = 'ACb6b4820df073e63312382f95b0314d07';
      const authTcoken = 'c60923ca097368662b39dfab470f2fd1';
      const client = require('twilio')(accountSid, authToken);
      client.messages
      .create({
          from: '+16304263296',
          body: original,
          to: '+918169813384'
        });

      console.log('Uppercasing', context.params.pushId, original);
      const uppercase = original.toUpperCase();
      return snapshot.ref.parent.child('firstName').set(uppercase);
    });

【问题讨论】:

  • 我看不出您是如何使用 Twilio API 检查错误的。通话可能失败。此外,您似乎并没有等待对 Twilio 的调用异步完成,这意味着它可能永远不会完成。当所有异步工作完成时,您需要返回一个解决方案。
  • 感谢道格的回复。如果我只运行 twilio 代码,那么它可以正常工作,但是在 firebase 函数内部调用时它不起作用。正在运行的代码如下:const accountSid = 'ACb6b4820df073e63312382f95b0314d07';常量 authTcoken = 'c60923ca097368662b39dfab470f2fd1'; const client = require('twilio')(accountSid, authToken); client.messages .create({ from: '+16304263296', body: original, to: '+918169813384' });

标签: javascript node.js firebase google-cloud-functions twilio


【解决方案1】:

您需要等待 Twilio 回复,then return 到 Firebase。

试试这个:


const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.sendNotfication = functions.database.ref('/kakuh/{pushId}/firstName')
    .onCreate((snapshot, context) => {

        const original = snapshot.val();
        const accountSid = 'ACb6b4820df073e63312382f95b0314d07';
        const authToken = 'c60923ca097368662b39dfab470f2fd1';
        const client = require('twilio')(accountSid, authToken);

        client.messages
            .create({
                from: '+16304263296',
                body: original,
                to: '+918169813384'
            })
            .then((message) => {
                console.log(message.sid);
                console.log('Uppercasing', context.params.pushId, original);
                const uppercase = original.toUpperCase();
                return snapshot.ref.parent.child('firstName').set(uppercase);
            })
            .catch((err) => {
                throw (err);
            });

    });

【讨论】:

  • 感谢 Alex 的回复和修改的代码。我仍然收到以下错误:错误:在模块的 Function.Module._load (module.js:475:25) 的 Function.Module._resolveFilename (module.js:548:15) 找不到模块 'twilio' .require (module.js:597:17) at require (internal/module.js:11:18) 在 exports.sendNotfication.functions.database.ref.onCreate (/srv/index.js:53:24) 在 cloudFunction (/srv/node_modules/firebase-functions/lib/cloud-functions.js:131:23) 在 /worker/worker.js:825:24 在
  • 在包含您的云函数的文件夹中使用npm install twilio 命令。然后,检查package.json 是否有类似"twilio": "^3.32.0" 的内容。 (firebase.google.com/docs/functions/handle-dependencies)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
相关资源
最近更新 更多