Использование библиотеки Yowsup 2 для отправки сообщений пользователю WhatsApp в связке с Asterisk
Yowsup 2 — это библиотека Python, которая позволяет авторизовываться в системе и использовать службу WhatsApp как официальный клиент WhatsApp с возможностью отправки сообщений пользователям. WARNING библиотека Yowsup 2 стабильно работает с Python 2.7 и Python 3. Инструкция: 1. Выполним подключение по SSH к серверу IP АТС Asterisk для выполнения дальнейшей настройки. В зависимости от используемой […]
Yowsup 2 — это библиотека Python, которая позволяет авторизовываться в системе и использовать службу WhatsApp как официальный клиент WhatsApp с возможностью отправки сообщений пользователям.
WARNING библиотека Yowsup 2 стабильно работает с Python 2.7 и Python 3.
Инструкция:
1. Выполним подключение по SSH к серверу IP АТС Asterisk для выполнения дальнейшей настройки. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.
2. Выполним проверку активности Selinux, в случае если активен, то выполним отключение:
# sestatus
# sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/selinux/config
3. В консоли управления для подключения репозиториев выполним ряд команд вида:
# rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/epel-release-6-5.noarch.rpm
# rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/ius-release-1.0-14.ius.el6.noarch.rpm
4. Выполним установку ряда пакетов необходимых для работы с библиотекой Yowsup. Для этого в консоли выполним ряд команд вида:
# yum install python27 python34 python27-dateutil python27-argparse python27-devel python27-pip python27-imaging
# pip2.7 install --upgrade pip
# yum install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel zlib-devel protobuf pycrypto git
# yum install gcc
5. Так же для работы библиотеки Yowsup нам потребуется установить пакет python-axolotl, который необходим для корректной работы обмена сообщениями и пакет python-six версии 1.10
# cd /usr/src/
# git clone https://github.com/tgalal/python-axolotl.git
# cd python-axolotl/
# python2.7 setup.py install
# pip2.7 install six==1.10
6. После успешной установки всего необходимого ряда зависимостей, перейдем к установке непосредственно библиотеки Yowsup для работы с WhatsApp, для этого выполним в консоли ряд команд вида:
# cd /usr/src/
# git clone git://github.com/tgalal/yowsup.git
# cd yowsup
Для корректной работы библиотеки необходимо получить текущую версию официального WhastApp клиента и ClassesDex
# wget https://raw.githubusercontent.com/mgp25/classesMD5-64/master/dexMD5.py
# wget https://www.cdn.whatsapp.net/android/2.18.379/WhatsApp.apk
# python3 dexMD5.py WhatsApp.apk
На момент написание данной статьи официальная версия клиента 2.18.379, а ClassesDex имел значение JfoS1T2x3koJVaLtqWRpAA== . Данные параметры необходимы для редактирования следующих файлов:
# nano yowsup/env/env_android.py
где ключевыми
параметрами для изменения являются:
_MD5_CLASSES — полученное ранее значение ClassesDex
_VERSION — текущая актуальная версия клиента WhatsApp
# nano yowsup/env/env.py
где ключевыми
параметрами для изменения являются:
DEFAULT – клиентская
платформа которая будет использоваться по умолчанию(android или s40)
7. Выполнив редактирование всех необходимых конфигурационных файлов приступим к сборке и установке библиотеки Yowsup
# python2.7 setup.py build
# python2.7 setup.py install
8. Если в процессе выполнения п.7 данной статьи было получено сообщение «Finished processing dependencies for yowsup2==2.5.7» сообщающее о успешности установки, то можно переходить к процедуре регистрации и подтверждения клиентского приложения WhatsApp, для этого в консоли выполним ряд команд вида:
# python2.7 yowsup-cli registration -E android --requestcode sms --phone 79611111111 --cc 7 --mcc 250 --mnc 99
где ключевыми параметрами для изменения являются:
phone – номер телефона на который регистрируется клиентское приложение
cc – код страны(Россия — 7)
mcc – код страны мобильного оператора связи(Россия — 250)
mnc – код сети мобильного оператора связи(01 — МТС, 02 — мегафон, 20 — теле2, 99 — билайн).
Выполним подтверждение регистрации клиентского приложения:
# python2.7 yowsup-cli registration -E android --register 421-117 --phone 79611111111 --cc 7
где ключевыми
параметрами для изменения являются:
register – код подтверждения регистрации
полученный по SMS
phone – номер телефона на который регистрируется
клиентское приложение
cc – код страны(Россия — 7)
После выполнения подтверждения регистрации будет получен ответ от сервера WhatsApp с паролем для прохождения авторизации в клиентском приложении, скопируем его и сохраним для последующего использования.
9. Для последующий возможности отправки сообщений одной командой, необходимо выполнить первичный вход с прохождением авторизации и генерации ключа, для этого выполним команду вида:
# python2.7 yowsup-cli demos -l 79611111111:Mbkr3EJkakFPLFsvZ0MFDOBaoDs= -y -E s40
где ключевыми
параметрами для изменения являются:
79611111111 – номер телефона на который
проводилась регистрация клиентского приложения
Mbkr3EJkakFPLFsvZ0MFDOBaoDs= —
пароль для авторизации полученный в ходе выполнения подтверждения регистрации
клиентского приложения
После появления CLI консоли «Yowsup Cli client» необходимо ввести «/L» и нажать «Enter», в результате чего произойдет подключение к серверу WhatsApp и будет сгенерирован ключ доступа
10. Последующую проверку возможности отправки сообщений пользователям WhatsApp , можно выполнить командой:
# python2.7 yowsup-cli demos -l 79611111111:Mbkr3EJkakFPLFsvZ0MFDOBaoDs= -E s40 -s 79001111111 "Test"
где ключевыми
параметрами для изменения являются:
79611111111 – номер телефона на который
проводилась регистрация клиентского приложения
Mbkr3EJkakFPLFsvZ0MFDOBaoDs= —
пароль для авторизации полученный в ходе выполнения подтверждения регистрации
клиентского приложения
79001111111 – номер телефона кому требуется
отправить сообщение
«Test» — текст отправляемого сообщения
11. Убедившись в корректности работы отправки сообщений из консоли, можем перейти к подключению возможности отправки сообщений из диалплана Asterisk. Предварительно необходимо разрешить выполнение yowsup-cli от имени пользователя asterisk с правами root пользователя, для этого выполним правки в файле sudoers:
# nano /etc/sudoers
И добавим в самый конец файла две строки вида:
asterisk ALL=(root)NOPASSWD:/usr/bin/python2.7
asterisk ALL=(root)NOPASSWD:/usr/bin/yowsup-cli
Рассмотрим вариант отправки сообщения в случае пропущенного вызова в очереди обзвона, для этого внесем следующие правки:
# nano /etc/asterisk/extensions_override_freepbx.conf
И добавим контекст вида:
[ext-queues]
exten => h,1,(Test send message to client WhatsApp)
same => n,ExecIf($[$[ "${NODEST}" != "" ] & $[ "${FORWARD_CONTEXT}" != "from-internal" ]]?(yowsup=${SHELL(sudo -u root /usr/bin/yowsup-cli demos -l 79611111111:Mbkr3EJkakFPLFsvZ0MFDOBaoDs= -E s40 -s 79001111111 "Пропущен вызов в очереди ${NODEST}. Номер абонента: ${CALLERID(num)}.")})))
same => n,Macro(hangupcall,)
где ключевыми
параметрами для изменения являются:
79611111111 – номер телефона на который
проводилась регистрация клиентского приложения
Mbkr3EJkakFPLFsvZ0MFDOBaoDs= —
пароль для авторизации полученный в ходе выполнения подтверждения регистрации
клиентского приложения
79001111111 – номер телефона кому требуется
отправить сообщение
Траблшутинг:
- Сообщение «old_version» — это возможная проблема, которая может возникнуть при выполнение регистрации клиентского приложения, описанная в п.8 данной статьи.
Данная ошибка сообщает о не корректно прописанных двух параметрах «_MD5_CLASSES» и «_VERSION» в файле «yowsup/env/env_android.py». Для решения данной проблемы еще раз стоит убедится в корректно прописанных параметрах, получение которых описано в п.6 данной статьи посредством скрипта dexMD5.py.
В корректности прописываемой версии можно убедится перейдя в интернет обозревателе(Opera, Google Chrome, Yandex Browser…..) по ссылки на официальный сайт разработчика приложения.
2. Сообщение «Disconnected: Connection Closed» — это возможная проблема, которая может возникнуть при выполнении первичной авторизации и генерации ключа описанного в п.9 данной статьи.
Данная ошибка сообщает о невозможности выполнения действий от имени платформы Android, для решения данной проблемы необходимо убедиться в наличии использования ключа «-E s40» в команде первичного входа:
# python2.7 yowsup-cli demos -l 79611111111:Mbkr3EJkakFPLFsvZ0MFDOBaoDs= -y -E s40
Остались вопросы?
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.