Twilio Studio - Select 和解析 JSON 使用 Liquid
Twilio Studio - Select and Parse JSON Using Liquid
在 Twilio Studio 中,我正在发出 GET 请求并尝试解析 JSON 并随后根据解析的 JSON 分配变量。我在使用 returned.JSON 时遇到困难。
本质上,我试图从匹配 returned JSON 的“行”设置变量(用户拨入,输入他们的 PIN {{widgets.PIN_Entry.Digits}} ,PIN 将匹配来自 GET 请求的 returned JSON 中的“行”,我们为匹配的行设置 userID、userEmail、userName、userPin 变量。
{
"DataSource": {
"Id": "12345",
"Name": "Dial-In Subscribers",
"Rows": [
[
"EMP-0226",
"ron@pawneeil.com",
"Ron Swanson",
"00054321"
],
[
"EMP-0267",
"leslie@pawneeil.com",
"Leslie Knope",
"00012345"
]
],
"TotalRows": 2,
"LastUpdated": "2020-08-26T03:39:42.7670000Z",
"CompanyId": 12345
}
}
我可以使用 JSON 路径(Twilio studio 不支持)轻松做到这一点 select 我希望设置为变量的值,但我不知道如何使用 Liquid 来做到这一点。
userID == $.DataSource.Rows[?(@.includes('00012345'))].[0]
(会 return “EMP-0267”)
userEmail == $.DataSource.Rows[?(@.includes('00012345'))].[1]
(return "leslie@pawneeil.com")
userName == $.DataSource.Rows[?(@.includes('00012345'))].[2]
(会 return “Leslie Knope)
userPin == $.DataSource.Rows[?(@.includes('00012345'))].[3]
(return“00012345”)
谁能分享一些关于如何使用 Liquid 解析 JSON 和设置变量的想法?以下是我的想法:
- 将变量 {{widgets.PIN_Entry.Digits}} 匹配到 returned JSON
中的一行
- 解析 selected 行并为 userID、userEmail、userName、userPin 设置变量。
我在这些情况下使用 Run Function Widget,我发现它比 Liquid Syntax 的细微差别更容易处理。
// Description
// Make a read request to an external API
// Add axios 0.20.0 as a dependency under Functions Settings, Dependencies
const axios = require('axios');
exports.handler = function (context, event, callback) {
let twiml = new Twilio.twiml.VoiceResponse();
// Arrays start at 0
let selectedDigit = 0;
axios
.get(`https://x.x.x.x/myAPI`)
.then((response) => {
let { Rows } = response.data.DataSource;
let result = Rows.filter((record, index) => index === selectedDigit);
twiml.say(`The result is ${result}`);
return callback(null, twiml);
})
.catch((error) => {
console.log(error);
return callback(error);
});
};
在 Twilio Studio 中,我正在发出 GET 请求并尝试解析 JSON 并随后根据解析的 JSON 分配变量。我在使用 returned.JSON 时遇到困难。
本质上,我试图从匹配 returned JSON 的“行”设置变量(用户拨入,输入他们的 PIN {{widgets.PIN_Entry.Digits}} ,PIN 将匹配来自 GET 请求的 returned JSON 中的“行”,我们为匹配的行设置 userID、userEmail、userName、userPin 变量。
{
"DataSource": {
"Id": "12345",
"Name": "Dial-In Subscribers",
"Rows": [
[
"EMP-0226",
"ron@pawneeil.com",
"Ron Swanson",
"00054321"
],
[
"EMP-0267",
"leslie@pawneeil.com",
"Leslie Knope",
"00012345"
]
],
"TotalRows": 2,
"LastUpdated": "2020-08-26T03:39:42.7670000Z",
"CompanyId": 12345
}
}
我可以使用 JSON 路径(Twilio studio 不支持)轻松做到这一点 select 我希望设置为变量的值,但我不知道如何使用 Liquid 来做到这一点。
userID == $.DataSource.Rows[?(@.includes('00012345'))].[0]
(会 return “EMP-0267”)
userEmail == $.DataSource.Rows[?(@.includes('00012345'))].[1]
(return "leslie@pawneeil.com")
userName == $.DataSource.Rows[?(@.includes('00012345'))].[2]
(会 return “Leslie Knope)
userPin == $.DataSource.Rows[?(@.includes('00012345'))].[3]
(return“00012345”)
谁能分享一些关于如何使用 Liquid 解析 JSON 和设置变量的想法?以下是我的想法:
- 将变量 {{widgets.PIN_Entry.Digits}} 匹配到 returned JSON 中的一行
- 解析 selected 行并为 userID、userEmail、userName、userPin 设置变量。
我在这些情况下使用 Run Function Widget,我发现它比 Liquid Syntax 的细微差别更容易处理。
// Description
// Make a read request to an external API
// Add axios 0.20.0 as a dependency under Functions Settings, Dependencies
const axios = require('axios');
exports.handler = function (context, event, callback) {
let twiml = new Twilio.twiml.VoiceResponse();
// Arrays start at 0
let selectedDigit = 0;
axios
.get(`https://x.x.x.x/myAPI`)
.then((response) => {
let { Rows } = response.data.DataSource;
let result = Rows.filter((record, index) => index === selectedDigit);
twiml.say(`The result is ${result}`);
return callback(null, twiml);
})
.catch((error) => {
console.log(error);
return callback(error);
});
};