【问题标题】:How to insert html tags in template literals in response object NodeJs如何在响应对象NodeJs的模板文字中插入html标签
【发布时间】:2021-09-23 09:53:36
【问题描述】:

Resultant Response in Messenger. But I need to bold username, phone-number, etc.

我是网络开发新手。
我也尝试过\x3Cb>I am Bold\x3C/b>",但对我不起作用。
在这种情况下如何添加 HTML 标签?

let response = {
        text: `| --- <b>${username} Appointment Details</b> --- |
        \n| ------------------------------------------------------------ |
        \n| 1. Username: <b>${username}</b> |
        \n| 2. Phone Number: <b>${user.phoneNumber}</b> |
        \n| 3. Appointment Time: <b>${user.appointmentTime}</b> |
        \n| 4. Appointment Created At: <b>${user.createdAt}</b> |
        \n| ------------------------------------------------------------ |`,
      };
      callSendAPI(sender_psid, response);

//this is callSendAPI function
let callSendAPI = (sender_psid, response) => {
  return new Promise(async (resolve, reject) => {
    try {
      let request_body = {
        recipient: {
          id: sender_psid,
        },
        message: response,
      };
      request(
        {
          uri: "https://graph.facebook.com/v11.0/me/messages",
          qs: { access_token: process.env.PAGE_ACCESS_TOKEN },
          method: "POST",
          json: request_body,
        },
        (err, res, body) => {
          if (!err) {
            resolve("message sent!");
          } else {
            reject("Unable to send message:" + err);
          }
        }
      );
    } catch (e) {
      reject(e);
    }
  });
};

【问题讨论】:

  • 您可能需要考虑使用像EJS 这样的工具。

标签: javascript template-strings


【解决方案1】:

在不知道“callSendAPI”函数的作用的情况下,很难说会发生什么......

话虽如此,模板文字在放置任何 HTML 时应该没有问题。因此,您不需要添加 \n,因为 \n 确实不适用于 HTML,因此如果您想对其进行格式化,您应该将其全部返回为 html,因此您可能需要使用
或 in你的情况,pre标签可能更合适

response = {
    text:`<pre>
    | ---    <b>${username} Appointment Details</b> --- |
    | ------------------------------------------------------------ |
    | 1. Username: <b>${username}</b> |
    | 2. Phone Number: <b>${user.phoneNumber}</b> |
    | 3. Appointment Time: <b>${user.appointmentTime}</b> |
    | 4. Appointment Created At: <b>${user.createdAt}</b> |
    | ------------------------------------------------------------ |
</pre>`}

【讨论】:

  • 实际上我正在构建 Messenger 聊天机器人。这里 callSendAPI 函数负责将响应发送给用户。我也试过你的代码 sn-p 但它不适合我。我需要加粗用户名、电话号码、约会时间和创建的用户。现在我正在编辑我的问题以添加结果图像。所以,你很好理解。注意:“\n”工作正常问候。
  • 我在顶部添加了生成的图像。您可以通过单击顶部的链接进行检查。实际上我也是堆栈溢出的新手,所以它不允许我直接嵌入图像。它会自动为我的图像生成链接。问候
  • 从屏幕截图看来,“消息”可能调用了另一个转义函数,它可能正在包装内容或转义 html 以防止代码注入。您是否使用 lib 进行聊天,如果是,那是什么?另外,如果您在浏览器中检查元素,您会在其位置看到什么代码?如果您正在使用聊天框架,则可能有传递 html 与文本的方法,无论如何都会假设
  • 我通过添加 callSendAPI 函数来更新我的问题。希望你明白发生了什么。这个函数(callSendAPI)只是简单地获取 PSID 和响应并发送给聊天机器人用户
猜你喜欢
  • 2019-08-02
  • 1970-01-01
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 2019-12-20
  • 1970-01-01
  • 2010-09-20
相关资源
最近更新 更多