首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法调用私有/受保护的twilio函数?

有没有办法调用私有/受保护的twilio函数?
EN

Stack Overflow用户
提问于 2019-08-16 12:41:09
回答 2查看 1.8K关注 0票数 3

这是我第一次使用twilio,我从新的twilio-cli开始,我创建了新的项目来构建和部署基于twilio函数的后端,但是我需要一些函数保持私有,我想通过它们的特定api-端点来调用该函数,但是,我总是收到消息“未经授权-您没有通过身份验证来执行此请求”。

这是我与twilio https://github.com/twilio-labs/plugin-serverless一起使用的插件,用于启动部署到twilio的基本项目。

我已经尝试使用我在这里找到的curl文档:https://www.twilio.com/docs/studio/rest-api/execution,但没有一个示例执行该函数。

代码语言:javascript
复制
curl -X POST 'https://serverless.twilio.com/v1/Services/ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Functions/ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
  -u ACXXXXXXXXXXXX:your_auth_token

我只需要收到一条hello world消息,这是函数的代码:

代码语言:javascript
复制
exports.handler = function(context, event, callback) {
  const twiml = new Twilio.twiml.MessagingResponse();
  twiml.message("Hello World!");
  console.log("Track this");
  callback(null, twiml);
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-16 13:40:48

嘿哟。两位开发人员在这里传道。

如果您通过运行twilio serverless:init来遵循无服务器插件init过程,那么您应该具有以下项目结构。

代码语言:javascript
复制
.
├── assets
│   ├── index.html
│   ├── message.private.js
│   └── style.css
├── functions
│   ├── hello-world.js
│   ├── private-message.js
│   └── sms
│       └──reply.protected.js
├── node_modules
├── package-lock.json
└── package.json

在运行twilio serverless:deploy之后,这些文件将产生以下HTTP端点。(您将拥有不同的域)。

代码语言:javascript
复制
Deploying functions & assets to the Twilio Runtime

Account     SK6a...
Token       kegH****************************
Service Name    foo-2
Environment dev
Root Directory  /private/tmp/foo
Dependencies
Env Variables

✔ Serverless project successfully deployed

Deployment Details
Domain: foo-3513-dev.twil.io
Service:
   foo (ZS8...)
Environment:
   dev (ZE0...)
Build SID:
   ZB9...
Functions:
   [protected] https://foo-3513-dev.twil.io/sms/reply
   https://foo-3513-dev.twil.io/hello-world
   https://foo-3513-dev.twil.io/private-message
Assets:
   [private] Runtime.getAssets()['/message.js']
   https://foo-3513-dev.twil.io/index.html
   https://foo-3513-dev.twil.io/style.css

仔细查看函数块中的运行时Urls。这些都是可用的端点。如您所见,引导项目包括两个公共函数(/hello-world/private-message)。你可以用卷发或者你的浏览器来调用它们。

此外,还有一个受保护的函数(/sms/reply)。此功能可用于从Twilio内部调用。

这意味着受保护的函数需要一个有效的Twilio签名。你可以读到关于那个这里的文章。如果您连接例如Studio来调用函数,它就会工作,因为web钩子包含一个Twilio签名。如果您想要curl它,您必须提供X-Twilio-Signature头。

希望这能有所帮助。:)

票数 2
EN

Stack Overflow用户

发布于 2020-11-25 18:16:30

公认的答案实际上并不能回答这个问题。

要调用受保护的函数,必须在X-Twilio-Signature头中提供签名。这就是如何创建这样一个签名(根据官方文档):

  1. 从协议(https.)获取为您的电话号码或应用程序指定的请求URL的完整URL。通过查询字符串的末尾(?之后的所有内容)。
  2. 如果请求是POST,按字母顺序对所有POST参数进行排序(使用Unix风格的区分大小写的排序顺序)。
  3. 迭代已排序的POST参数列表,并将变量名称和值(没有分隔符)追加到URL字符串的末尾。
  4. 使用您的AuthToken作为键用HMAC-SHA1 1对结果字符串进行签名(请记住,您的AuthToken的情况很重要!)
  5. Base64对结果的哈希值进行编码。

官方文件:https://www.twilio.com/docs/usage/security#validating-requests

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57524844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档