【问题标题】:How can I use Twilio for "pass-through" SMS exchanges?如何使用 Twilio 进行“直通”SMS 交换?
【发布时间】:2016-10-21 00:33:33
【问题描述】:

出于某种原因,我很难理解 Twilio 模型的工作原理;因此,我试图通过猜测来编写解决方案(我讨厌正在做的事情。)我希望有人能帮助解决这个困惑。

我已经设置了转发器,这样当有人向我的 Twilio 号码发送短信时,我会在手机上收到短信。问题是,当我回复该文本时,它会发送给 Twilio,而不是返回给原始发件人。

我尝试在标签中将我的号码作为“发件人”字符串传递,但这被 Twilio 拒绝为不是有效的 Twilio 号码。

<?php header('Content-Type: text/html'); ?>
<Response>

  <!-- ****** This gets rejected: ****** -->
  <!-- Message to="<?=$_REQUEST['PhoneNumber']?>" from="<?=$_REQUEST['From']?>" -->

  <Message to="<?=$_REQUEST['PhoneNumber']?>">
    <?=htmlspecialchars(substr($_REQUEST['From'] . $_REQUEST['Body'], 0, 1600))?>
  </Message>
</Response>

【问题讨论】:

  • 你为什么要使用你的号码作为来自?此外,当您回复 Twilio 时,Twilio 会知道消息的号码(您的号码)。我不确定,但您是否试图掩盖您的电话号码,例如这个用例:twilio.com/use-cases/masked-phone-numbers
  • 因为 Twilio 没有将回复发回给我,而这正是我希望它做的事情。换句话说,如果乔给我的 Twilio 号码发短信,我会在我的手机上收到他的短信 - 但如果我用手机回复他的短信,回复将发送给(并留在)Twilio,而不是发送给乔.最后一点 - 我怎样才能让这个回复回到乔 - 是我想要弄清楚的。

标签: php sms twilio twilio-twiml


【解决方案1】:

当一条消息从 Twilio 转发给您时,您需要知道发出该消息的电话号码。

发送消息时,您需要告诉 Twilio 将消息发送到哪里。

因此,按照这样的约定:消息以电话号码开头,然后是 /,然后是实际消息,您可以将此代码用于 webhook。

<?php
    header("content-type: text/xml");
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
?>

<?php 

$myPhoneNumber = "+15557779999"; 

if ($_REQUEST['From'] == $myPhoneNumber) {
    $message = explode("/", htmlspecialchars(substr($_REQUEST['Body'], 0, 1600)));
    $theOtherPhoneNumber = $message[0];
    $theOtherMessage = $message[1];
    echo(
        "<Response>
          <Message to=\"{$theOtherPhoneNumber}\">
            {$theOtherMessage}
          </Message>
        </Response>"
    );  

} else {
    $message = htmlspecialchars(substr($_REQUEST['From'] ."/ " .$_REQUEST['Body'], 0, 1600));
    echo(
        "<Response>
          <Message to=\"{$myPhoneNumber}\">
            {$message}
          </Message>
        </Response>"
    );

}

?>

如您所见,代码会检查您的电话号码。如果 Twilio 收到的消息来自您的号码,则代码会将其发送到您在消息开头输入的号码。你的信息应该是这样的:

+15553331111/ Hey, how is going?

如果您需要更详细的信息,Twilio 有一些关于屏蔽电话号码的教程。 https://www.twilio.com/docs/tutorials

【讨论】:

  • 谢谢,但这并不能回答我的问题。也许我没有解释清楚,所以我会再试一次:在正常的短信对话中,如果乔给我发短信,他的短信被标记为来自他的号码 - 所以如果我回复它,我的回复将回到他。但是,如果 Joe 给我的 Twilio 号码发短信,我收到的短信将被标记为来自 Twilio 的 号码 - 所以如果我回复该短信,我的 SMS 不会发送给 Joe,而是发送给我自己的号码特维利奥。必须通过为每个给我发短信的人复制文本中的数字来手动创建新对话不是一个合理的解决方案。
  • 我明白,但是如果您不告诉 Twilio 将您的消息发送到哪里,除非您在代码中实现了一些约定,否则它不会知道。此外,当您收到消息时,假设 Joe1 和 Joe2 将同时发送,因为您从 Twilio 收到两条消息,您正在回复谁?您是为乔预留号码吗?然后你可以硬编码他的号码,所有的消息都会从你的#发送给他。
  • 我想问题归结为“有没有办法在 Twilio 中实现有状态机制,类似于 HTML 中的会话和/或 cookie”。很难相信不会有一个 - 但我在教程中找不到任何示例也很令人惊讶。无论如何,感谢您迄今为止的帮助。即便不是答案,但至少能帮我看清问题所在的方向。
猜你喜欢
  • 2022-06-16
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-12
相关资源
最近更新 更多