[英]Problem With decoding an Incoming WhatsApp message using Twilio
我使用这个 lambda 作为 Twilio WhatsApp 的 WebHook。 但是当我收到消息时。 它是一个 base64 编码。 在用 utf-8 解码为字符串后,它仍然不是正确的字符串形式。 这是代码:
exports.handler = async (event) => {
// TODO implement
// event = JSON.stringify(event);
console.log("Event: ", event);
console.log("BODY", event.body);
let buff = Buffer.from(event.body, 'base64');
let text = buff.toString('utf-8');
console.log("Text Before ", text);
//
let array = text.split('&');
console.log({array});
let text2 = unescape(array[6]);
let replaced = text2.split('+').join(' ');
console.log("New Text ", replaced);
console.log("New Text2 ", text2);
//console.log(JSON.stringify(text) );
// console.log({array});
//console.log("Message Body", );
const response = {
statusCode: 200,
body: JSON.stringify(),
};
return response;
};
原始讯息
Hello, From the Other Side
我在 lambda 事件中得到的文本 base64 编码==
解码为字符串后,我得到了这个。
Hello%2C+Form+the+Other+side.
提前致谢。
问题是正文是作为表单编码参数传递的,而您使用的是一种朴素的解码方法。 Node.js(和浏览器)有一个内置的方法来做到这一点, URLSearchParams
object。
您可以使用它将字符串解码为键/值对,然后像这样get
所需的键:
const buff = Buffer.from(event.body, "base64");
const formEncodedParams = buff.toString("utf-8");
const urlSearchParams = new URLSearchParams(formEncodedParams);
const body = urlSearchParams.get("Body");
console.log(body);
// => "Hello, Form the Other side."
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.