Twilio Studio 和 Rebrandly 链接缩短器 - 返回解析而不是字符串

问题描述

我改编了一些指令,以便 Twilio Studio 通过与 Rebrandly API 对话的函数获取缩短的 URL。除了返回的数据在字符串中而不是解析之外,它工作正常,如下所示:

Studio Log

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
  });
};

这样做将为您提供您想要使用的已解析响应正文。