这是我第一次使用twilio,我从新的twilio-cli开始,我创建了一个新项目,以通过twilio函数构建和部署后端,但是我需要某些函数保持私有,我想通过其特定的api端点调用该函数,但我总是收到消息“未经授权-您未通过身份验证才能执行此请求”
这是我与twilio-cli 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);
};
答案 0 :(得分:2)
Heyooo。 ?Twilio开发人员布道者。
如果您通过运行twilio serverless: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
仔细查看功能块中的Runtime Urls。这些是可用的端点。如您所见,引导程序项目包含两个公共功能(/hello-world
和/private-message
)。您可以使用curl或浏览器来调用它们。
此外,还有一个受保护的功能(/sms/reply
)。此功能可用于从Twilio内部进行的呼叫。
这意味着受保护的函数需要有效的Twilio签名。您可以阅读有关here的信息。如果您连接例如Studio调用它将起作用的功能,因为Webhook包含Twilio签名。如果要curl
,则必须提供X-Twilio-Signature
标头。
希望这会有所帮助。 :)
答案 1 :(得分:0)
接受的答案实际上并未回答问题。
要调用受保护的函数,必须在X-Twilio-Signature
标头中提供签名。这是创建此类签名的方法(根据官方文档):
官方文档:https://www.twilio.com/docs/usage/security#validating-requests