建立您的初创公司:准备进行短信

最终产品图片
您将要创造的

本教程是 Envato Tuts +上的“ 使用PHP构建启动”系列 的一部分。 在本系列文章中,我 将以 我的 Meeting Planner 应用程序作为真实示例 ,指导您完成从概念到现实的启动 在此过程的每一步中,我都会将Meeting Planner代码作为开放源代码示例发布,您可以从中学习。 我还将解决与启动相关的业务问题。

准备短信

当您在旅途中且安排会议时间快到时,接收有用的短信通常比电子邮件提醒更有用。 我一直都知道,文本(或SMS)消息传递将在Meeting Planner中发挥重要作用。

在今天的一集中,我将为您介绍Meeting Planner应用程序的SMS配置的前半部分。 基本上,我将介绍选择SMS提供商,设置帐户,构建初始应用程序基础结构以及试用短信的方法。

在下一个情节中,我将在Meeting Planner应用程序中构建特定的发短信方案,并引导您完成这些决定和后续的编码。

如果还没有,请立即安排您的第一次会议 ,以试用Meeting Planner。 请在下面的评论中随意发表有关您的经历的反馈。

我确实参与了评论主题,但您也可以在Twitter上与我联系@reifman 。 我总是乐于接受新功能的想法和主题建议,以供将来的教程使用。

提醒一下,Meeting Planner的所有代码都是在PHP的Yii2框架中编写的。 如果您想了解有关Yii2的更多信息,请查看我的平行系列“ 使用Yii2编程” 。 我开发会议计划者的时间越长,对Yii2及其志愿者团队的印象就越深刻。

选择短信提供商

从应用程序发送文本消息的最简单方法是订阅服务。 正如我将Mailgun用于Meeting Planner的入站出站电子邮件一样 ,我将需要SMS提供商来传递文本消息。

我查看的两个最重要的服务是TwilioPlivo 。 两者看起来都像是合格的提供程序,但是Twilio具有更广泛的服务,更丰富的文档和顶级的用户体验。

这是Twilio的SMS产品页面的屏幕截图:

建立启动文本和SMS-Twilio主页以获取SMS功能

Twilio提供了一系列的服务,您必须花一点时间才能找到SMS:

建立启动文本和SMS-Twilio产品提供菜单

Plivo似乎也是一个不错的选择,但是它的网站,文档和API似乎不像Twilio那样复杂:

建立启动文本和短信-Plivo主页

但是,Plivo比Twilio便宜得多。 具体来说,它提供免费的入站SMS:

建立启动文本和短信-价格比较Twilio与Plivo

我决定使用Twilio进行最初的SMS实施,但是将功能模块化,以便可以轻松地将其切换到其他提供商。

我确实对随着会议规模的扩大而在Meeting Planner中发短信的成本感到担忧。 我是否会在没有收入来源或投资者之前向所有用户免费提供SMS?

在早期的Alpha阶段,这不是最重要的问题。 同样,我仍然专注于为Beta版本提供最佳的MVP。

Twilio入门

报名

在Twilio中注册很容易:

建立启动文本和短信-Twilio注册

作为高级通信服务提供商,他们在注册过程中实施SMS验证:

建立启动文本和SMS-Twilio验证

SMS仪表板

验证后,您将进入一个精心设计的友好仪表板:

建立启动文本和SMS-Twilio SMS仪表板

收集我们的凭证

首先,我从“ API凭据”页面访问了帐户ID和令牌:

建立启动文本和SMS-Twilio SMS仪表板

我记下了这些内容,以便以后与Meeting Planner集成。

获取电话号码

Twilio为您提供了一个电话号码,您可以从该电话号码通过应用程序发送SMS:

建立启动文本和短信-Twilio获取您的电话号码

我选择了一个带有西雅图区号的号码,Meeting Planner就是基于该号码:

建立启动文本和短信-Twilio您的新电话号码是

然后,我使用Twilio发送了我的第一条测试消息:

建立启动文本和SMS-Twilio测试发送消息

邮件很快就到达了我的手机。

关于传入消息的思考

超越MVP的考虑 ,传入消息功能对于Meeting Planner来说将非常有用。 例如,您可以发短信说您迟到或需要一个方便的链接来指向手机导航应用程序的路线。 当前,您必须单击进入会议邀请的网络。

Twilio提供了丰富的服务来响应入站文本,包括称为TwiML的文本标记语言。

建立启动文本和SMS-Twilio传入消息

目前,我不必担心入站消息。 但是,只要有人发短信给您的Twilio号码,您就需要付费; 换句话说,滥用的时机已经成熟。

让我们看一下几种简单的成本管理方法。

控制成本

对于Alpha和Beta测试,我将文本支持限制为北美电话号码。 这将使成本降低一点。 Twilio提供了一种内置的按地理位置过滤的方法:

建立启动文本和SMS-控制地理权限以管理成本

Twilio还提供消息传递服务,您可以将其配置为以适合您的应用程序的特定方式运行,包括阻止所有SMS

建立启动文本和短信

如您所见,他们还认为入站文本垃圾邮件和滥用是他们正在考虑的常规SMS平台(而非其自身)中的一个弱点。

将Twilio集成到会议计划器中

接下来,我想在Meeting Planner中运行基本的SMS功能。

查找Twilio的Yii扩展

事实证明,Yii框架为Twilio提供了几个可用的扩展。 我决定为Twilio PHP SDK(GitHub)安装FilipAjdačićYII2包装器,因为他的名字是最不寻常的(开个玩笑,他的扩展名似乎得到了定期维护)。

我将扩展名添加到composer.json。 由于技术上处于开发模式,因此比直接要求扩展更好:

"filipajdacic/yii2-twilio": "dev-master"

然后,我更新了环境:

$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Removing ezyang/htmlpurifier (v4.7.0)
  - Installing ezyang/htmlpurifier (v4.8.0)
    Downloading: 100%

  - Installing twilio/sdk (4.10.0)
    Downloading: 100%

  - Installing filipajdacic/yii2-twilio (dev-master 7d547a0)
    Cloning 7d547a0a47c9864f2e8b5fb5f43748fbd24fc4b1

Writing lock file
Generating autoload files

我不太担心它的开发状态,因为它是一个相对简单,直接的扩展,可以激活Twilio API。

添加凭据

首先,我从上方将密钥添加到初始化文件中:

twilio_sid = "ACxxxxXXxxxxxXXxxxXXxxxxxxxxxxxe1"
twilio_token = "d3xxxxXXxxxxxXXxxxXXxxxxxxxxxxx41"
twilio_number = "1206XXXYYYY"
# for next episode
#twilio_service_sid = "MxxxxXXxxxxxXXxxxXXxxxxxxxxxxxGf6"

然后,我在/frontend/config/main.php中添加了该组件的注册:

return [
    'id' => 'mp-frontend',
    'name' => 'Meeting Planner',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'frontend\controllers',
    'components' => [
    ...
        'Yii2Twilio' => [
          'class' => 'filipajdacic\yiitwilio\YiiTwilio',
          'account_sid' => $config['twilio_sid'],
          'auth_key' => $config['twilio_token'],
        ],
        'log' => [
        ...

我还发现最好将一些变量放在common \ config \ params-local.php中,以便在整个应用程序中轻松访问:

<?php
return [
  ...
  'sms_number' => '1206XXXYYYY',
  'twilio_service_id' => 'MGXXXXXYYYYZZZZ11134446',
  'twilio_test_number' => '1-206-NNN-QQQQ',
];

建立短信模型

然后,我建立了一个Sms.php模型以在需要文本时以编程方式使用:

<?php
namespace common\models;
use Yii;
use yii\base\Model;
use frontend\models\UserContact;

class Sms
{
  private $sms;
  private $service_id;
  private $mp_number;
  private $test_number;

   function __construct() {

     $this->sms = Yii::$app->Yii2Twilio->initTwilio();
     $this->mp_number = Yii::$app->params['sms_number'];
     $this->service_id = Yii::$app->params['twilio_service_id'];
     $this->test_number = Yii::$app->params['twilio_test_number'];
  }

  public function transmit($user_id,$body='') {
    // to do - lookup usercontact to sms
    // see if they have a usercontact entry that accepts sms
    // transmit
    $to_number = $this->test_number;
    $to_number = $this->findUserNumber($user_id);
    if (!$to_number)
    {
      return false;
    }
    try {
        $message = $this->sms->account->messages->create(array(
            "From" => $this->mp_number,
            "To" => $to_number,   // Text this number
            'MessagingServiceSid' => $this->service_id,
            "Body" => $body,
        ));
    } catch (\Services_Twilio_RestException $e) {
            echo $e->getMessage();
    }
  }

最初, findUserNumber()是一个存根,而send transmit()只会发送到我的个人手机params-local.php中的测试号码。

这是一些测试代码,我用来从Meeting Planner发送第一条消息:

$user_id = 1;
$s = new \common\models\Sms();
$s->transmit($user_id,'First test from Meeting Planner codebase!');

结果如下:

建立启动文本和短信-我的第一个Twilio文本

注意:是的,我知道我应该给手机充电-但实际上是iPhone 6的电池寿命很长才是问题所在。

因此,这就是您注册Twilio并实现基本功能的方式。

展望未来

在下一集中,我们将探讨SMS与Meeting Planner的实际集成。 以下是一些问题:

  • 人们将如何提供他们的电话号码以发短信?
  • 哪些会议计划程序功能应使用SMS进行通知和传送?
  • 人们将如何决定要从Meeting Planner接收文本的内容?
  • Meeting Planner是否会处理入站文本并做出响应?
  • 在启动MVP期间,我将如何控制SMS成本并防止滥用?
  • 改用Plivo可以降低成本吗?

与往常一样,请继续关注“ 使用PHP构建您的启动”系列中的更多后续教程。 正如前总统候选人唐纳德·特朗普(Donald Trump)所说:“我们要赢,赢那么多,您会厌倦赢的。您会说,'拜托杰夫,别再赢了。'而我会说,'不,抱歉,请放心,我们将继续赢得胜利。”

您是否已经通过会议计划器安排了会议? 没有? 走! 做吧 现在做! 与往常一样,请让我知道您在下面或评论中的想法。 我很感激。 没有你的帮助,我无法取胜。

相关链接

翻译自: https://code.tutsplus.com/tutorials/building-your-startup-preparing-for-text-messaging--cms-26912

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值