这是我第一次使用twilio,我从新的twilio-cli开始,我创建了新的项目来构建和部署基于twilio函数的后端,但是我需要一些函数保持私有,我想通过它们的特定api-端点来调用该函数,但是,我总是收到消息“未经授权-您没有通过身份验证来执行此请求”。
这是我与twilio https://github.com/twilio-labs/plugin-serverless一起使用的插件,用于启动部署到twilio的基本项目。
我已经尝试使用我在这里找到的curl文档:https://www.twilio.com/docs/studio/rest-api/execution,但没有一个示例执行该函数。
curl -X POST 'https://serverless.twilio.com/v1/Services/ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Functions/ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
-u ACXXXXXXXXXXXX:your_auth_token我只需要收到一条hello world消息,这是函数的代码:
exports.handler = function(context, event, callback) {
const twiml = new Twilio.twiml.MessagingResponse();
twiml.message("Hello World!");
console.log("Track this");
callback(null, twiml);
};发布于 2019-08-16 13:40:48
嘿哟。两位开发人员在这里传道。
如果您通过运行twilio serverless:init来遵循无服务器插件init过程,那么您应该具有以下项目结构。
.
├── 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端点。(您将拥有不同的域)。
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头。
希望这能有所帮助。:)
发布于 2020-11-25 18:16:30
公认的答案实际上并不能回答这个问题。
要调用受保护的函数,必须在X-Twilio-Signature头中提供签名。这就是如何创建这样一个签名(根据官方文档):
官方文件:https://www.twilio.com/docs/usage/security#validating-requests
https://stackoverflow.com/questions/57524844
复制相似问题