当前位置: 首页 > 知识库问答 >
问题:

使用Twilio功能转发SMS消息时获取Twilio电话号码友好名称

储国发
2023-03-14

当我将短信转发给另一个电话号码时,我想传递Twilio电话号码的友好名称。(友好名称是在购买Twilio number时分配给它的属性。)

这与这里和这里描述的“使用Twilio字母数字发送者ID发送品牌SMS消息”不同。

我在美国操作,上面不支持,我可以在转发的消息(或电子邮件的主题行)的正文中包括“友好的名字”。此外,“友好名称”并不像上面的示例那样与消息的原始发送者相关联,而是与我的Twilio数字相关联。希望一切都清楚了。

我正在使用以下示例代码:

将SMS消息转发到另一个电话号码-Twilio支持

将三个参数传递到函数中:

exports.handler = function(context, event, callback) {
AccountSid
ApiVersion
Body
From
FromCity
FromCountry
FromState
FromZip
MessageSid
NumMedia
NumSegments
SmsMessageSid
SmsSid
SmsStatus
To
ToCity
ToCountry
ToState
ToZip

更新:从这个Twilio文档中,我看到了一条线索,我可以从accountsid.something.outgoing_caller_id.friendlyName获得友好的名称

我不太明白如何在Twilio函数中做到这一点。我试着用:

context.getTwilioClient();

文档说“将返回一个初始化的REST客户机,您可以使用该客户机调用Twilio REST API。”但是,它返回一个空的httpClient对象以及用户名、密码和AccountSID的字符串。我期待一个填充的对象,从中我可以获得电话号码的友好名称。

共有1个答案

禄和宜
2023-03-14

你走在正确的道路上!出色的研究。事实上,context.getTwilioclient()是其中的一部分。初始化Twilio REST API客户机后,可以使用另一个Twilio API来确定event.to中的FriendlyName是什么。我发现,在这里,过滤与精确匹配的IncomingPhoneNumbers。

下面是一种方式,当然可能还有其他的。

const got = require('got');

// async function to deal with async REST API call

exports.handler = async function(context, event, callback) {

  const client = context.getTwilioClient();

  // await an async response
  await client.incomingPhoneNumbers
    .list({phoneNumber: event.To, limit: 1})
    .then(incomingPhoneNumbers => event.friendlyName = incomingPhoneNumbers[0].friendlyName)
    .catch(err => console.log(err));

  const requestBody = {
    personalizations: [{ to: [{ email: context.TO_EMAIL_ADDRESS }] }],
    from: { email: context.FROM_EMAIL_ADDRESS },
    subject: `New SMS message from: ${event.From}`,
    content: [
      {
        type: 'text/plain',
        value: `${event.Body} - ${event.friendlyName}`
      }
    ]
  };

  got
    .post('https://api.sendgrid.com/v3/mail/send', {
      headers: {
        Authorization: `Bearer ${context.SENDGRID_API_KEY}`,
        "Content-Type": 'application/json'
      },
      body: JSON.stringify(requestBody)
    })
    .then(response => {
      console.log(response);
      let twiml = new Twilio.twiml.MessagingResponse();
      twiml.message({to: '+1555xxxxxxx'}, `You Message: ${event.Body} - ${event.friendlyName}`);
      callback(null, twiml);
    })
    .catch(err => {
      console.log(err);
      callback(err);
    });
};

特定于与事件对象关联的键,这是一个方便的使用方法。

Object.keys(event).forEach( thisKey => console.log(`${thisKey}: ${event[thisKey]}`));
 类似资料:
  • 如何搜索与特定号码相关的所有传入和传出消息?

  • 我是ruby和ruby on rails的新手,在设置Twilio发送短信时遇到了麻烦。

  • 我正在尝试使用Twilio自动化呼叫转接。当用户调用Twilio号码时,它将播放一些欢迎信息,然后它应该调用外部API,API将返回Twilio应该调用的电话号码。我正试着用这个TwiML。这是我的TwiML-bin文档 例如是返回数字的URL。我如何用TwiML实现这一点?有没有可能在TwiML中定义一个变量?因为如果我可以使用<代码>

  • 它说。 我的问题是,你如何“在你的Twilio账户中拥有一个电话号码”?这是否意味着我可以让我的用户选择他们的电话号码,然后添加到我的Twilio帐户,然后用他们的号码发送短信?

  • 我正在设置一个电脑系统应用程序,这将发送短信警报。可以选择:服务类型:HTTP、SMTP或SMPP。我被告知要使用HTTP。HTTP(S)方法:Post或GET。我被告知要用GET。HTTP(S)URL:我认为https://api.twilio.com/2010-04-01是正确的HTTP(S)参数:举个例子:username=xxx&password=xxxx&mobNo=%xxxx%&mes

  • 我正在我的Twilio沙盒中构建一个whatsapp聊天机器人。我已经通过了API,但我不知道如何检索一个人的电话号码(发件人的电话号码),假设这是可能的?原因是我想限制每个用户在给定时间段内可以执行的操作数量。 我不确定这是否有帮助,但当我发送请求时,我在ngrok上获得的信息