Рубрики
Без рубрики

Ретрансляция и отвечая на SMS Twilio через Slass с функциями DICION.IO

Использование Serverless Framework, таких как Dission.io, является быстрой и портативный способ создания приложения … Помечено с Python, Serverless, Twilio, Kubernetes.

Использование Бесплатная рамка, как Dission.io Является быстрым и портативным способом для создания уровня приложений между высокопрограммируемыми службами, такими как Twilio и Slack – Common, но не всегда легко автоматизированные и интегрированные, услуги для разработчиков для программирования услуг связи, такие как SMS, Voice и Chat Services. Деление обращается к этому, позволяя вам запускать легкие программы, которые могут потреблять и работать по данным запроса, а в нашем сценарии действовать как оркестратор или маршрутизатор для этих инструментов связи.

То, что мы собираемся создать, – это два задания деления, маленький Python (в наших случае) программы, чтобы получить номер и сообщение, чтобы выйти через провину в Twilio для предполагаемого получателя, и когда ваш номер SMS Twilio получает сообщение, Доставляется, чтобы расслабиться.

Предварительные условия

Вам понадобится от Slack Incoming WebHook (для публикации сообщений к каналу) и команду SLASH (чтобы деление запускала вашу функцию через почтовые запросы от Slack на этом веб -ook):

Входящие веб-капоны

Сделайте записку URL-адреса Cooksslack для вашей задачи деления в данный момент. Затем создайте свое приложение Slack для команды SLASH, что-то вроде/Twilio:

Команды Slash

Из Twilio вы просто понадобится ваш аккаунт SID, API-токен и номер Twilio SMS-SMS:

Twilio |. Авторизоваться

Вы также будете также развернуты задачи (потому что вам понадобится URL-адрес деления, который вы получите создание), создайте Twilio WebHook для любого из ваших номеров:

Настройка телефонных номеров для получения и ответа на SMS и MMS-сообщения

Создание наших функций

В Send.py мы собираемся создать скрипт, который работает при запуске вашей команды SLASH (запись запроса от провисания до деления):

import json

import requests

import urllib

from flask import request, redirect

from twilio.rest import Client

CHANNEL\_NAME="twilio"

SLACK\_TOKEN=""

TWILIO\_SENDER="" #Number with Country code

LIMIT\_TO\_CC="" #i.e. +1

В этом разделе замените Slack_Token с вашим токеном приложения SLIC, определите канал, который вы хотите, чтобы ответить образует API SLIC (в идеале то же самое, где команда будет запущена), а затем необязательно добавить код страны для ограничения SMS-сообщений ( Таким образом, вы можете иметь пользователи предоставить 10-значный номер телефона), а номер вашего Twilio в Twilio_Sender.

В нашей главной () функции (въезд по умолчанию деления для задач Python), нам понадобится сделать некоторую настройку, чтобы оно могло выбрать тело от слабые, когда команда Slash Allughtio Send: 8325551900 Здравствуйте, как вы попадаете на ваше задание деления:

_def_ main():

    params = urllib.parse.parse\_qs(_str_(request.get\_data()))

    incoming\_token = params["b'token"][0]

    channel\_name = params['channel\_name'][0]

    response\_url = params['response\_url'][0]

    message = params['text'][0]

Здесь есть пара новых произведений, incoming_token, которую мы пересматриваем на мгновение, чтобы убедиться, что он соответствует желаемому жетону для приложения Slack, и Response_URL, который даст нам URL-адрес, чтобы отменить ответ к статусу запроса Отказ

Далее мы добавим некоторую справку текста, а затем начать нарезать сообщение:

jmarhee/dissision-twilio-sms-slack

Таким образом, мы разделяем число из текста сообщения, а затем передаем его в нашу функцию Twilio_conn (которая я буду накрою секунду) и отправить этот ответ на URL-адрес ослабления, чтобы вы могли посмотреть, отправлено ли ваше сообщение Правильно или нет в slack_callback:

jmarhee/dissision-twilio-sms-slack

На данный момент мы можем создать эту функцию:

fission function create --name twilio\_send --env python3 --route /twilio\_send --method POST --code send.py

И дайте URL Http://$ fission_roouter/twilio_send в команду slash slack slack, чтобы опубликовать.

Наш следующий шаг будет создать конечную точку для Twilio для отправки запросов, поэтому мы сделаем аналогичную настройку на нашем скрипте Recv.py. Для этого вам просто понадобится ваш входящий URL-адрес веб -ook от Slack:

jmarhee/dissision-twilio-sms-slack

Прежде чем мы пойдем дальше, давайте посмотрим на те данные Twilio отправляет в этот веб -ook. В нашем примере мы получим запросы от Twilio, которые выглядят так:

"GET /twil?ToCountry=US&ToState=CO&SmsMessageSid=&NumMedia=0&ToCity=&FromZip=&SmsSid=&FromState=TX&SmsStatus=received&FromCity=&Body=Dhdhdhdhsh&FromCountry=US&To=%&ToZip=&NumSegments=1&MessageSid=&AccountSid=&From=%&ApiVersion=2010-04-01 HTTP/1.1"

И мы в основном обеспокоены полями, клями и тела в полезной нагрузке из Twilio, поэтому в нашем recv.py Entrypoint мы захочем обрабатывать их и передавать их в функцию SLOST_CALLOUT, как мы в отправке. PY в гораздо простой рабочий процесс:

jmarhee/dissision-twilio-sms-slack

Мы схватываем эти поля из объекта request.args, содержащие вышеупомянутую отформатированную полезную нагрузку и преобразование значений в строки и передача его в аналогичную функцию рассеивания, которые просто публикуют непосредственно к URL-адресу WebHook, чтобы выбросить сообщение, и его отправителя в канал.

Как только вы создадите свою задачу:

fission function create --name twilio\_recv --env python3 --route /twilio\_recv --method GET --code recv.py

Вернитесь к консоли Twilio, а в поле SMS для вашего номера вы укажете, что вам понравится веб-канал, и что данные будут отправлены в качестве запроса на эту конечную точку, ваш http://$ dision_roter/Twilio_recv URL:

Дальнейшее чтение

Вы можете взглянуть на завершенные сценарии здесь:

jmarhee/dissision-twilio-sms-slack

Оригинал: “https://dev.to/jmarhee/relaying-and-replying-to-twilio-sms-via-slack-with-fissionio-functions-abf”