问题描述
我改编了一些指令,以便 Twilio Studio 通过与 Rebrandly API 对话的函数获取缩短的 URL。除了返回的数据在字符串中而不是解析之外,它工作正常,如下所示:
Rebrandly 提供的代码是:
exports.handler = function(context,event,callback) {
let response = { get_started: true };
let request = require("request");
let linkRequest = {
destination: "https://www.carecalls.co.uk/conferma-ricevuta?num=" + event.receiver,domain: { fullName: "link.carecalls.co.uk" }
//,slashtag: "A_NEW_SLASHTAG"
//,title: ""
}
let requestHeaders = {
"Content-Type": "application/json","apikey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX","workspace": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
request({
uri: "https://api.rebrandly.com/v1/links",method: "POST",body: JSON.stringify(linkRequest),headers: requestHeaders
},(err,response,body) => {
let link = JSON.parse(body);
console.log(`Long URL was ${link.destination},short URL is ${link.shortUrl}`);
callback(null,response);
});
};
我需要更改什么才能获得工作室可以用来填充变量的解析列表?我是一个非常环保的开发人员,所以希望这对某人来说是显而易见的!非常感谢帮助
解决方法
在回调中,响应是返回到 Studio 的内容。如果响应是一个对象,Twilio Functions 将为您将其字符串化并将其发送回 Studio 进行解析。
https://www.twilio.com/docs/runtime/functions/invocation#callback-function
回调函数 当您完成处理您的请求时,您 需要调用回调函数来发出响应并完成 执行。回调方法会自动判断数据 类型的响应并适当地序列化输出。
,这里是 Twilio 开发者布道者。
在您提供的函数中,您将整个响应对象返回给 Twilio。该对象是 JSON 字符串化的,但由于响应的主体已经是 JSON,因此它已被双重转义。 Studio 将解析响应,但这只会解析主体一次,而不是它需要的两次。
我建议不要返回整个响应,而是只返回响应的正文。您已经将主体解析为变量 link
,因此只需将该变量返回给 callback
函数即可:
},(err,response,body) => {
let link = JSON.parse(body);
console.log(`Long URL was ${link.destination},short URL is ${link.shortUrl}`);
callback(null,link); // << return link here
});
};
这样做将为您提供您想要使用的已解析响应正文。