*Это гостевая статья, написанная Юри Гадовым, основателем Teeboxer; службы, созданной с целью объединения многих интернет-технологий, включая Twilio, чтобы помочь гольфистам больше играть и тратить меньше времени на решение вопросов, связанных с гольфом, вне поля.*
Teeboxer и Twilio являются программными продуктами в виде сервисов, что означает веб-приложение, использующее облачные вычисления для своей инфраструктуры. Teeboxer работает в Rackspace Cloud, а Twilio — в Amazon’s EC2. Они общаются с помощью языка разметки TwiML, который они обмениваются через веб-запросы (так же, как ваш браузер получает HTML с веб-сайтов).
Когда человек звонит в Teeboxer, он фактически звонит в Twilio, который делает веб-запрос в Teeboxer с некоторой информацией о звонке, например, номером телефона звонящего. Teeboxer находит пользователя по номеру телефона и использует TwiML, чтобы сказать Twilio, что делать дальше. Например, если Джейн подтверждает свой номер телефона в Teeboxer и затем звонит с него, Teeboxer найдет ее имя, определит местное время Джейн, найдет информацию о ее следующем раунде и скажет Twilio приветствовать ее, используя TwiML, который выглядит так:
[/crayon]
Это говорит Twilio «собрать» одну цифру (через тоновый набор) с телефона Джейн в любое время, пока оно общается с Джейн, и отправить эту цифру обратно в Teeboxer на teeboxer.com/twilio/example — используя тот же метод, который ваш браузер использует для отправки форм на веб-сайты, т.е. HTTP POST.
Как и звонки в Teeboxer, когда человек отправляет текстовое сообщение в Teeboxer, оно попадает в Twilio, который делает веб-запрос в Teeboxer с сообщением и информацией об отправителе. Teeboxer находит отправителя и просматривает текстовое сообщение в поисках команды, которую он может выполнить.
Как только Teeboxer определяет, как ответить, он дает Twilio кусок TwiML. Например, в ответ на текстовое сообщение Джейн с запросом направлений, Teeboxer найдет ее следующее время начала игры и скажет Twilio отправить текстовое сообщение Джейн со ссылкой на Google-карту для этого поля с помощью TwiML: