Скрипты для uKit9
WhatsApp, пожалуй, самый популярный мессенджер в России, среди общего количества пользователей. Для многих не секрет, что в uKit вышло новое обновление и теперь в виджете «Соц. Сети» можно указать ссылку на WhatsApp по номеру телефона. Но мы решили дать возможность пользователям написать сообщение прямо с вашего сайта.
Поэтому, специально для пользователей uKit мы решили написать скрипт, который будет генерировать сообщение в мессенджер WhatsApp.
Настройки данного виджета: https://ukit.top/screen/76.png.
- Укажите свой номер в WhatsApp
- Задержка появления формы в миллисекундах
- Текст приветствия, при открытии формы WhatsApp
Код
Здравствуйте! Напишите нам сообщение в WhatsApp
Во вкладке «Настройки» в разделе «Выводить код» отметьте пункт «В конец
Установить сторонний код на ваш сайт, вы можете на тарифе «Про». Ознакомиться с тарифом вы можете на следующей странице: blog-ru.ukit.com/updates/tariffs. Также отмечу, что вы можете обратиться в службу поддержки uKit за помощью в установке кода на тарифах «Премиум» и выше, через раздел «Помощь» (скриншот). Демо страницаНаписать автору статьиПохожие материалы:
–>Всего комментариев–>: 9 |
<label>Порядок вывода комментариев:</label> |
–> Автор оригинала: Kartik Nighania
- Перевод
Автор материала, перевод которого мы сегодня публикуем, говорит, что современные люди, жизнь которых переполнена работой, часто забывают писать сообщения своим родным и близким. Он, глядя на то, как его родители каждое утро шлют ему в WhatsApp вдохновляющие цитаты и полезные советы о здоровье, решил, что пришло время ответить им взаимностью. В этом руководстве мы напишем простой Python-скрипт, предназначенный для отправки WhatsApp-сообщений. В ходе работы будем пользоваться Python-пакетом Twilio. Для организации ежедневного запуска скрипта в заданное время разместим код в облаке. Одним из подходов к решению этой задачи является использование Python-пакета Selenium и веб-версии WhatsApp вместо сервиса Twilio, на который, после исчерпания возможностей бесплатного предложения, нужно оформлять платную подписку. Но так как работа с веб-версией WhatsApp требует периодического сканирования QR-кода с помощью мобильного телефона, автоматизировать отправку сообщений при таком подходе не получится. Работа над проектом будет состоять из трёх шагов:
- Настройка Twilio.
- Изучение и модификация кода.
- Развёртывание проекта в облаке и настройка триггера.
Шаг 1. Настройка Twilio
Создадим бесплатную учётную запись на сайте Twilio, подтвердим адрес электронной почты и номер телефона.
Регистрация учётной записи Twilio
Кроме того, в рамках бесплатного предложения Twilio необходимо использовать WhatsApp-песочницу (WhatsApp Sandbox). Это означает, что вы не сможете пользоваться собственным номером телефона, и то, что вам придётся пройти через процедуру выдачи разрешения на получение WhatsApp-сообщений. Собственным номером для работы с сообщениями можно пользоваться после того, как WhatsApp разрешит Twilio использовать ваш номер. Для того чтобы получить разрешение, нужно заполнить форму. Из материалов техподдержки Twilio можно узнать о том, что, хотя Twilio и работает напрямую с WhatsApp, на получение разрешения может понадобиться некоторое время. К тому же, там говорится об ограниченных масштабах выдачи разрешений. В результате многим приходится пользоваться WhatsApp-песочницей Twilio. Всё это особой радости не вызывает, но то, что доступно нам в рамках бесплатного предложения Twilio, позволяет решить нашу задачу. Кроме того, получается, что WhatsApp-песочница — это пока единственный широкодоступный вариант. Теперь нужно подключить телефон получателя сообщений к песочнице, после чего на этот телефон можно будет отправлять сообщения. Для того чтобы узнать о том, как это сделать, вам нужно перейти в раздел консоли Twilio, который посвящён WhatsApp. В частности, тут предлагается отправить WhatsApp-сообщение с указанным текстом на определённый номер.
Страница консоли Twilio с инструкциями по подключению телефона, на который можно будет отправлять сообщения
Запрос на подключение, отправленный с телефона
Сохраните выданный вам WhatsApp-номер в контактах. Ему можно назначить любое имя. Я, чтобы не усложнять себе жизнь, назвал этот контакт Twilio Sandbox, а потом отправил на него сообщение с телефона отца (это можно видеть на предыдущем рисунке). Эта процедура выполняется лишь один раз. Теперь нужно перейти в консоль Twilio и получить SID и токен аутентификации для своей учётной записи. Эти данные помогут Twilio узнать вас при программной работе с сервисом.
Шаг 2. Изучение и модификация кода
Загрузите этот GitHub-репозиторий и распакуйте архив.
Содержимое zip-файла
Здесь вы найдёте файл с исходным кодом (whatsapp_messaging.py
) и пакет для развёртывания проекта (aws_lambda_deploy.zip
). Вот код скрипта:
from twilio.rest import Client def msg_mom_and_dad(event=None, context=None): # тут нужно использовать SID и токен аутентификации, которые вы получили на Twilio twilio_sid = 'AC84c9f1602d7fb6af4eda5b0c39a03b37' auth_token = '4a2021b28f1aa606d9c6945d3c248ebd' whatsapp_client = Client(twilio_sid, auth_token) # в этот словарь можно добавлять контактные сведения тех, # кому вы хотите отправлять сообщения contact_directory = {'daddy':'+919624666836'} for key, value in contact_directory.items(): msg_loved_ones = whatsapp_client.messages.create( body = 'good morning {} !'.format(key), from_= 'whatsapp:+14155238886', to='whatsapp:' + value, ) print(msg_loved_ones.sid)
Сейчас мы разберём этот код. Вот, для удобства, скриншот с пронумерованными строками.
Код файла whatsapp_messaging.py с пронумерованными строками
- Строка 1. Импорт клиента для работы с REST-API Twilio.
- Строка 3. Создание функции
msg_mom_and_dad
. Эту функцию мы передадим AWS. Она будет вызываться ежедневно в заданное время. - Строки 6-7. Здесь вам нужно заменить существующие в коде
sid
иauth_token
на собственные (об их получении мы говорили в конце предыдущего раздела). - Строка 9. Создание объекта клиента Twilio с использованием учётных данных.
- Строка 13. Создание словаря. В качестве ключа тут используется имя получателя сообщений, в качестве значения — номер его телефона. В этот словарь можно добавить и дополнительные контактные сведения.
- Строка 15. Цикл
for
, в котором осуществляется обход словаря (в нём пока имеется лишь одна запись). Вbody
нужно указать текст сообщения. Я создал простое сообщение с текстом «good morning», за которым следует значение, взятое из ключа текущего элемента словаря. В моём случае это приводит к формированию сообщения «good morning daddy !». Воfrom_
указывается тот WhatsApp-номер, который мы получили ранее. Вto
записывают номер получателя сообщения — тот, с которого ранее отправляли запрос на подключение к WhatsApp-песочнице Twilio. - Строка 23. Тут мы, в целях проверки состояния сообщения, выводим его SID. Мы этими сведениями пользоваться не будем.
Вам, чтобы воспользоваться этим кодом для отправки сообщений, нужно изменить в нём следующее:
twilio_sid
auth_token contact_directory from_ body (это необязательно)
После того, как вы внесёте в код изменения, сохраните файл. Затем распакуйте архив aws_lambda_deploy.zip
, замените файл whatsapp_messaging.py
на ваш файл с тем же именем, после чего снова упакуйте всё в .zip-архив. Смысл этих действий сводится к тому, чтобы внести в код ваши учётные данные и сведения о тех, кому вы хотите отправлять сообщения. Всё остальное в пакете, предназначенном для развёртывания на AWS, осталось неизменным. Теперь займёмся работой с AWS.
Шаг 3. Развёртывание проекта на AWS и настройка триггера
Код готов к запуску и к тому, чтобы отправлять WhatsApp-сообщения. Если вы интересуетесь тем, какую роль в проекте играют другие файлы из архива aws_lambda_deploy.zip
, то знайте, что среди этих файлов находятся пакет Twilio и все остальные зависимости проекта. Всё это нам нужно из-за того, что мы планируем использовать функции AWS Lambda в Python-окружении, в котором нет пакета Twilio. А почему бы нам это не исправить, просто выполнив для установки нужного пакета команду pip install twilio
? Дело в том, что тут у нас нет сервера. Для этого мы используем AWS Lambda — это бессерверная вычислительная среда, в которой можно размещать фрагменты кода, вызов которых, в соответствии с нуждами пользователя, инициируют различные события и триггеры. Наш код планируется запускать всего раз в день, поэтому использование чего-то вроде EC2-сервера на AWS, работающего круглосуточно, окажется пустой тратой вычислительных ресурсов и денег. Наша Lambda-функция будет вызываться ежедневно в определённое время по запросу из триггера, а её выполнение будет занимать совсем немного времени. Начало создания Lambda-функции Войдите в свою учётную запись AWS. После этого пройдите по пути Services → Compute → Lambda → Create a function
.
Экран создания Lambda-функции
Дадим функции имя. В качестве окружения, в котором будет выполняться функция, выберем Python 3.6. Нам не нужно подключаться к другим сервисам AWS. Поэтому нас устроит уровень разрешений, задаваемый вариантом Create a new role with basic Lambda permissions
. После выполнения настроек достаточно нажать на кнопку Create function
. Теперь мы окажемся на главной панели управления.
Панель управления
Здесь, в разделе Function code
, нужно указать обработчик (Handler
), с помощью которого система сможет запускать наш код. В нашем случае в поле Handler
нужно записать строку whatsapp_messaging. msg_mom_and_dad
, указав имя файла с кодом и функцию, которую мы хотим вызывать. В поле Function package
нужно загрузить наш .zip-файл, то есть — тот файл, который мы создали на предыдущем шаге. Теперь код готов к запуску. Проверить — работает ли функция и отправляет ли она сообщения, можно, нажав на кнопку Test
. Финальным шагом нашей работы станет настройка триггера, который будет вызывать функцию ежедневно в заданное время. Пройдите по пути Add trigger → CloudWatch Events
.
Настройка триггера
Нам нужно создать новое правило (Rule
). Ему необходимо назначить имя (Rule name
). При желании можно добавить к нему описание (Rule description
). Укажем тип правила (Rule type
) как Schedule expression
. Время вызова функции задаётся с помощью конструкции cron(30 1 * * ? *)
. Разберём эту конструкцию:
30 1
означает UTC-время 1:30 утра. Это — 7 утра по моему IST-времени.- Следующие два символа,
* *
, служат для указания дня месяца и месяца. - Следующие два символа,
? *
, позволяют указать день недели и год. Эта конструкция означает, что функция будет вызываться ежедневно, без ограничений по годам и месяцам.
Здесь вы можете узнать о том, как настраивать собственные задания cron. После того, как настройка триггера завершена, проверьте — установлен ли флажок Enable trigger
, включающий триггер. Теперь осталось лишь нажать на кнопку Add
и триггер будет создан.
Сведения о триггере
Сведения о Lambda-функции
На панели управления Lambda-функции можно видеть, что к функции прикреплена сущность CloudWatch Events
, и то, что функция может вызываться по срабатыванию соответствующего триггера.
Итоги
Сообщение, отправленное Python-скриптом
Мы завершили работу над проектом. Теперь можно, в телефоне получателя сообщений, в контактах WhatsApp, поменять имя контакта Twilio Sandbox на собственное (я поменял его на Son). Наша система, кроме того, позволяет общаться с получателем сообщений из панели управления Twilio.Уважаемые читатели! Используете ли вы Twilio в своих проектах?
Андрей Шагин
</span>
Sep 30, 2019·7 min read
</span>
В повседневной рутине мы часто забываем о близких. А ведь можно воспользоваться WhatsApp! То, с какой регулярностью родители шлют мне с утра пораньше сообщения — засыпая меня мудрыми цитатами и проявляя заботу о моём здоровье — не давало мне покоя, пока я не придумал, что с этим делать.
В данном руководстве мы напишем простой скрипт Python для отправки сообщений через WhatsApp. Делать мы это будем с помощью пакета Twilio. Чтобы запускать скрипт каждый день в определённое время, поместим наш код в облако AWS (Amazon Web Services).
Теперь можно начинать!
Одно из решений — использовать пакет Selenium на Python и веб-версию WhatsApp, а не Twilio, так как в нем по окончании периода бесплатного использования надо оформлять платную подписку. Однако WhatsApp время от времени запрашивает сканирование QR-кода через мобильное устройство, поэтому автоматизация была бы невозможна.
Сделаем ее в три этапа:
Перевод статьи Kartik Nighania: I Wrote a Script to WhatsApp My Parents Every Morning in Just 20 Lines of Python Code
Используемые источники:
- https://ukit.top/scripts/skript_dlja_otpravki_soobshhenij_s_sajta_na_whatsapp
- https://habr.com/ru/company/ruvds/blog/463933/
- https://medium.com/nuances-of-programming/как-я-писал-скрипт-для-whatsapp-сообщений-в-20-строках-кода-python-73b36cd8d14c