Статьи

Создание вашего стартапа: подготовка к обмену текстовыми сообщениями

Конечный продукт
Что вы будете создавать

Это руководство является частью серии « Создай свой стартап с помощью PHP» на Envato Tuts +. В этой серии я проведу вас через запуск стартапа от концепции до реальности, используя мое приложение Meeting Planner в качестве примера из реальной жизни. На каждом этапе я буду публиковать код Планировщика собраний в качестве примеров с открытым исходным кодом, из которых вы можете извлечь уроки. Я также буду решать вопросы, связанные с бизнесом по мере их возникновения.

Когда вы находитесь в пути и приближается запланированное время встречи, получение полезных текстовых сообщений часто более полезно, чем напоминания по электронной почте . Я всегда знал, что текстовые (или SMS) сообщения будут играть полезную роль в Планировщике собраний.

В сегодняшнем выпуске я собираюсь рассказать вам о первой половине конфигурации SMS для приложения Meeting Planner. В основном я расскажу о выборе поставщика SMS, настройке учетной записи, создании начальной инфраструктуры приложений и пробных текстовых сообщениях.

В следующем эпизоде ​​я добавлю конкретные сценарии текстовых сообщений в приложение Meeting Planner и проведу вас через эти решения и последующую кодировку.

Если вы еще этого не сделали, попробуйте прямо сейчас Планировщик собраний, запланировав свою первую встречу . Не стесняйтесь оставлять отзывы о вашем опыте в комментариях ниже.

Я участвую в комментариях, но вы также можете связаться со мной @reifman в Twitter. Я всегда открыт для новых идей и тематических предложений для будущих уроков.

Напоминаем, что весь код для Meeting Planner написан на Yii2 Framework для PHP. Если вы хотите узнать больше о Yii2, ознакомьтесь с моей параллельной серией Программирование с Yii2 . Чем больше я строю Планировщика встреч, тем больше меня впечатляет Yii2 и их команда добровольцев.

Самый простой способ отправлять текстовые сообщения из вашего приложения — это подписаться на услугу. Так же, как я использую Mailgun для входящей и исходящей электронной почты Планировщика собраний, мне потребуется поставщик SMS для доставки текстовых сообщений.

Два самых известных сервиса, на которые я смотрел, были Twilio и Plivo . Оба выглядели как компетентные поставщики, но у Twilio были более широкие услуги, более богатая документация и пользовательский опыт высшего уровня.

Вот скриншот со страницы продукта Twilio для SMS :

Создание стартапов Текст и SMS - домашняя страница Twilio для функций SMS

Twilio предлагает такой набор услуг, что вам нужно немного погрузиться, чтобы найти SMS:

Создание стартапов Текст и SMS - меню продуктов Twilio

Plivo также казался хорошим выбором, но его веб-сайт, документация и API не были такими сложными, как Twilio:

Создание стартапов Текст и SMS - Plivo Home Page

Тем не менее, Пливо намного дешевле, чем Twilio; в частности, он предлагает бесплатные входящие SMS:

Создание стартапов Текст и SMS - Сравнение цен Twilio vs Plivo

Я решил пойти с Twilio для моей первоначальной реализации SMS, но для модульной функциональности, чтобы я мог легко переключить их на другого поставщика.

У меня есть некоторые опасения по поводу стоимости текстовых сообщений в Meeting Planner по мере увеличения аудитории. Буду ли я предлагать SMS бесплатно всем пользователям, даже до того, как появится поток доходов или инвесторов?

На ранней стадии альфа это не было главной заботой. Опять же, я все еще сосредоточен на предоставлении лучшего MVP, который я могу для бета-версии.

Зарегистрироваться в Twilio очень просто:

Создание стартапов Текст и SMS - Twilio Зарегистрироваться

Как сложный поставщик услуг связи, они осуществляют проверку SMS в процессе регистрации:

Создание стартапов Текст и SMS - проверка Twilio

После проверки вы попадаете на дружественную, хорошо спроектированную панель:

Создание стартапов Текст и СМС - Twilio SMS Dashboard

Сначала я получил доступ к идентификатору учетной записи и токену со страницы учетных данных API :

Создание стартапов Текст и СМС - Twilio SMS Dashboard

Я принял их к сведению для последующей интеграции с Планировщиком собраний.

Twilio предоставляет вам номер телефона, с которого вы можете отправить SMS из своего приложения:

Создание стартапов Текст и SMS - Twilio Получите ваш номер телефона

Я выбрал номер с кодом города Сиэтла, на котором основан планировщик собраний:

Создание стартапов Текст и SMS - Twilio Ваш новый номер телефона

Затем, используя Twilio, я отправил свое первое тестовое сообщение:

Создание стартапов Текст и SMS - тест Twilio Отправить сообщение

Сообщение пришло очень быстро на мой телефон.

Думая не только о MVP , возможность входящего сообщения была бы отличной для Meeting Planner. Например, вы можете написать, что опаздываете, или вам нужна удобная ссылка на инструкции для навигационного приложения вашего телефона. В настоящее время для этого вам нужно перейти в Интернет к приглашению на встречу.

Twilio предлагает богатый набор услуг для реагирования на входящие тексты, включая язык разметки текстовых сообщений под названием TwiML .

Создание стартапов Текст и SMS - входящие сообщения Twilio

На данный момент я не буду сильно беспокоиться о входящих сообщениях. Тем не менее, каждый раз, когда люди пишут ваш номер Twilio, с вас взимается плата; другими словами, он готов к злоупотреблениям.

Давайте рассмотрим несколько простых способов управления затратами.

Для альфа и бета тестирования я ограничиваю текстовую поддержку североамериканскими телефонными номерами. Это будет держать расходы немного ниже. Twilio предлагает встроенный способ фильтрации по географии:

Создание стартапов Текст и SMS - управление географическими разрешениями для управления затратами

Twilio также предоставляет службы обмена сообщениями, которые вы можете настроить для работы определенным образом с учетом вашего приложения, включая блокировку всех SMS :

Создание стартапов Текст и СМС

Как вы можете видеть, они также видят входящий текстовый спам и злоупотребление как слабость в общей платформе SMS (не своей), о которой они думают.

Затем я хотел, чтобы основные функции SMS работали в Meeting Planner.

Оказывается, есть несколько доступных расширений для Twilio с Yii Framework. Я решил установить обертку Филипа Айдачича для YII2 для Twilio PHP SDK (GitHub), потому что его имя было самым необычным (шучу, его расширение, казалось, регулярно поддерживалось).

Я добавил расширение для composer.json. Технически это находится в режиме разработки, это работает лучше, чем прямое расширение:

1
«filipajdacic/yii2-twilio»: «dev-master»

Затем я обновил среду:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
$ 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.

Сначала я добавил ключи сверху в мои файлы инициализации:

1
2
3
4
5
twilio_sid = «ACxxxxXXxxxxxXXxxxXXxxxxxxxxxxxe1»
twilio_token = «d3xxxxXXxxxxxXXxxxXXxxxxxxxxxxx41»
twilio_number = «1206XXXYYYY»
# for next episode
#twilio_service_sid = «MxxxxXXxxxxxXXxxxXXxxxxxxxxxxxGf6»

Затем я добавил регистрацию компонента в /frontend/config/main.php:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
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’ => [
       …

Я также нашел, что лучше всего разместить несколько переменных в общем \ config \ params-local.php для более легкого доступа через приложение:

1
2
3
4
5
6
7
<?php
return [
  …
  ‘sms_number’ => ‘1206XXXYYYY’,
  ‘twilio_service_id’ => ‘MGXXXXXYYYYZZZZ11134446’,
  ‘twilio_test_number’ => ‘1-206-NNN-QQQQ’,
];

Затем я построил модель Sms.php для программного использования при необходимости текстов:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?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() был заглушкой, а findUserNumber() отправлял тестовый номер только в params-local.php, мой личный мобильный телефон.

Вот некоторый тестовый код, который я использовал для отправки моего первого сообщения от Meeting Planner:

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

Вот результаты:

Построение текста стартапов и SMS - мой первый текст Twilio

Примечание: да, я знаю, что должен зарядить свой телефон, но проблема в том, что iPhone 6 плохо работает от батареи.

Таким образом, вы получаете подписку на Twilio и реализуете основные функции.

В следующем выпуске мы рассмотрим фактическую интеграцию SMS с Meeting Planner. Вот несколько вопросов, которые возникнут:

  • Как люди будут предоставлять свои номера телефонов для текстовых сообщений?
  • Какие функции Планировщика собраний должны использовать SMS для уведомлений и доставки?
  • Как люди решат, для чего они хотят получать тексты от Meeting Planner?
  • Будет ли Meeting Planner обрабатывать входящие тексты и отвечать на них?
  • Как я буду контролировать расходы на SMS и предотвращать злоупотребления на этапе запуска MVP?
  • Что потребуется, чтобы перейти на Пливо, чтобы снизить расходы?

Как всегда, следите за новыми учебниками из серии « Построение стартапа с помощью PHP» . Как говорил бывший кандидат в президенты Дональд Трамп: «Мы собираемся побеждать, побеждаем настолько, что устанем побеждать. Вы скажете:« Пожалуйста, Джефф, прекрати побеждать ». И я скажу:« Нет, извини, успокойся, победа будет продолжаться ».

Вы уже запланировали встречу через Meeting Planner? Нет? Идти! Сделай это. Сделай это сейчас! И как всегда, дайте мне знать, что вы думаете ниже или в комментариях. Я признателен за это. Я не могу продолжать выигрывать без вашей помощи.