繁体   English   中英

使用 Twilio 解码传入 WhatsApp 消息的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM