Twilio 错误 11200 - HTTP 检索失败:尝试检索媒体失败,同时尝试通过 Rest API 触发 Twilio Studio 流程执行
Twilio Error 11200- HTTP retrieval failure: Attempt to retrieve media failed, while trying to Trigger a Twilio Studio Flow Execution via Rest API
我正在尝试构建此预约管理系统,以使用 Twilio+ Airtable + Postman 安排疫苗接种预约。 ([Link到博客后面])2
为了通过 Rest API 触发 Twilio studio 流程并从我的 Twilio 号码获取我的个人号码上的可编程消息,我通过提供 URL 的流程,其中包含真实的 flow_sid 和其他详细信息,但每次发出 post 请求时都会遇到以下错误:
Twilio 错误日志:
- (错误:11200)HTTP 检索失败尝试检索此 URL 的内容时失败。
邮递员测试结果:
- 响应时间小于1000ms | AssertionError:预期 2315 低于 1000
工作室流程在第一个实例中调用的函数是:
const airtable = require("airtable");
exports.handler = function (context, event, callback) {
const base = new airtable({apiKey: context.AIRTABLE_API_KEY}).base(context.AIRTABLE_BASE_ID);
const client = context.getTwilioClient();
let paramsMap = new Map();
base("appointments")
.select()
.all()
.then((records) => {
const sendingMessages = records.map((record) => {
if (record.get('Appointment_Status') === "pending"){
paramsMap['name'] = record.get('Name');
paramsMap['appointment_date'] = record.get('Date');
paramsMap['appointment_time'] = record.get('Appointment_Time');
paramsMap['airtable_record_id'] = record.getId();
paramsMap['appt_id'] = record.get('ID');
}
});
return Promise.all(sendingMessages);
})
.then(() => {
if (paramsMap['name'] === undefined) //No appointments in system
{
console.log("No appointments in system");
callback(null, "From studio function");
}
params_list = {
"appointment_date": paramsMap['appointment_date'],
"appointment_time": paramsMap['appointment_time'],
"provider_name":"Owl Health",
"patient_name": paramsMap['name'],
"airtable_record_id": paramsMap['airtable_record_id'],
"appt_id": paramsMap['appt_id']
};
client.studio.v1.flows('Vaccine-Reminder').executions.create(
{
to: '+91xxxxxxxxxx',
from: '+12xxxxxxxxxx',
parameters: JSON.stringify(params_list)
}
)
.then(function(execution) {
console.log("Execution Id:" + execution.sid);
callback(null, "Message sent via studio function");
})
.catch(err => callback(err));
})
.catch((err) => {
console.log("Airtable error");
callback(err);
});
};
这里是 Twilio 开发人员布道者。
根据您的问题,我认为您是通过直接向 Flow 发出 API 请求来创建 Studio Flow Execution。但是,您包含的函数旨在在从 Airtable 收集数据后发出该请求。
Studio Flow 不应调用该函数,该函数使用以下代码创建执行:
client.studio.v1.flows('Vaccine-Reminder').executions.create(
{
to: '+91xxxxxxxxxx',
from: '+12xxxxxxxxxx',
parameters: JSON.stringify(params_list)
}
)
Postman 测试结果具有误导性。 API 在不到 1000 毫秒内没有响应的事实意味着它可能会更快,但 201 响应表明它至少是成功的。
不要使用 Postman 创建 Studio 执行,而是尝试使用它来调用您的 Twilio 函数,如果有帮助请告诉我。
Studio Flow
我正在尝试构建此预约管理系统,以使用 Twilio+ Airtable + Postman 安排疫苗接种预约。 ([Link到博客后面])2
为了通过 Rest API 触发 Twilio studio 流程并从我的 Twilio 号码获取我的个人号码上的可编程消息,我通过提供 URL 的流程,其中包含真实的 flow_sid 和其他详细信息,但每次发出 post 请求时都会遇到以下错误:
Twilio 错误日志:
- (错误:11200)HTTP 检索失败尝试检索此 URL 的内容时失败。
邮递员测试结果:
- 响应时间小于1000ms | AssertionError:预期 2315 低于 1000
工作室流程在第一个实例中调用的函数是:
const airtable = require("airtable");
exports.handler = function (context, event, callback) {
const base = new airtable({apiKey: context.AIRTABLE_API_KEY}).base(context.AIRTABLE_BASE_ID);
const client = context.getTwilioClient();
let paramsMap = new Map();
base("appointments")
.select()
.all()
.then((records) => {
const sendingMessages = records.map((record) => {
if (record.get('Appointment_Status') === "pending"){
paramsMap['name'] = record.get('Name');
paramsMap['appointment_date'] = record.get('Date');
paramsMap['appointment_time'] = record.get('Appointment_Time');
paramsMap['airtable_record_id'] = record.getId();
paramsMap['appt_id'] = record.get('ID');
}
});
return Promise.all(sendingMessages);
})
.then(() => {
if (paramsMap['name'] === undefined) //No appointments in system
{
console.log("No appointments in system");
callback(null, "From studio function");
}
params_list = {
"appointment_date": paramsMap['appointment_date'],
"appointment_time": paramsMap['appointment_time'],
"provider_name":"Owl Health",
"patient_name": paramsMap['name'],
"airtable_record_id": paramsMap['airtable_record_id'],
"appt_id": paramsMap['appt_id']
};
client.studio.v1.flows('Vaccine-Reminder').executions.create(
{
to: '+91xxxxxxxxxx',
from: '+12xxxxxxxxxx',
parameters: JSON.stringify(params_list)
}
)
.then(function(execution) {
console.log("Execution Id:" + execution.sid);
callback(null, "Message sent via studio function");
})
.catch(err => callback(err));
})
.catch((err) => {
console.log("Airtable error");
callback(err);
});
};
这里是 Twilio 开发人员布道者。
根据您的问题,我认为您是通过直接向 Flow 发出 API 请求来创建 Studio Flow Execution。但是,您包含的函数旨在在从 Airtable 收集数据后发出该请求。
Studio Flow 不应调用该函数,该函数使用以下代码创建执行:
client.studio.v1.flows('Vaccine-Reminder').executions.create(
{
to: '+91xxxxxxxxxx',
from: '+12xxxxxxxxxx',
parameters: JSON.stringify(params_list)
}
)
Postman 测试结果具有误导性。 API 在不到 1000 毫秒内没有响应的事实意味着它可能会更快,但 201 响应表明它至少是成功的。
不要使用 Postman 创建 Studio 执行,而是尝试使用它来调用您的 Twilio 函数,如果有帮助请告诉我。
Studio Flow