Пакет rhymen/go-whatsapp реализует WhatsApp Web API, чтобы обеспечить понятный интерфейс для разработчиков. Большое спасибо всем участникам проекта sigalor/whatsapp-web-reveng. Официальный WhatsApp Business API был выпущен в августе 2018 года. Вы можете проверить его здесь.
Установка
перейдите и получите github.com/Rhymen/go-whatsapp
Usage
Создание соединения
import (whatsapp "github.com/Rhymen/go-whatsapp")wac, err: = whatsapp.NewConn (20 * time.Second)
Продолжительность, передаваемая в функцию NewConn, используется для тайм-аута запросов входа в систему. Если у вас плохое интернет-соединение, используйте большее значение тайм-аута. Эта функция создает только соединение с веб-сокетом, она не обрабатывает аутентификацию.
Login
qrChan: = make (chan string) go func () {fmt.Printf ("qr code:% v n",
Процесс аутентификации требует, чтобы вы отсканировали qr-код, который отправляется по каналу, с устройством, на котором вы используете WhatsApp. Возвращенную структуру сеанса можно сохранить и использовать для восстановления входа в систему без повторного сканирования qr-кода. Код qr имеет ttl, равный 20 секундам, и функция входа в систему выдает ошибку тайм-аута, если время прошло или любой другой запрос не прошел.
Restore
newSess, err: = wac.RestoreWithSession (sessions)
Функция восстановления требует действительного сеанса и возвращает новый сеанс, который был создан .
Добавить обработчики сообщений
type myHandler struct {} func (myHandler) HandleError (err error) {fmt.Fprintf (os.Stderr, "% v", err)} func (myHandler) HandleTextMessage (сообщение whatsapp.TextMessage) {fmt.Println (message)} func (myHandler) HandleImageMessage (сообщение whatsapp.ImageMessage.) {fmt.Println (message)} func (myHandler) HandleImageMessage (message whatsapp.ImageMessage.) {f Println (сообщение)} func (myHandler) HandleDocumentMessage (сообщение whatsapp.DocumentMessage) {fmt.Println (сообщение)} func (myHandler) HandleVideoMessage (сообщение whatsapp.VideoMessage) {fmt.Println (сообщение)} func (myHandlerMessage) whatsapp.AudioMessage) {fmt.Println (сообщение)} func (myHandler) HandleJsonMessage (строка сообщения) {f mt.Println (сообщение)} func (myHandler) HandleContactMessage (сообщение whatsapp.ContactMessage) {fmt.Println (message)} func (myHandler) HandleBatteryMessage (msg whatsapp.BatteryMessage) {fmt.Println (myNewactler) func (свяжитесь с whatsapp.Contact) {fmt.Println (contact)} wac.AddHandler (myHandler {})
Все обработчики сообщений являются необязательными, вам не нужно ничего реализовывать но обработчик ошибок для реализации интерфейса. ImageMessage, VideoMessage, AudioMessage и DocumentMessage предоставляют функцию загрузки для получения мультимедийных данных.
Отправка текстовых сообщений
text: = whatsapp.TextMessage {Информация: whatsapp. MessageInfo {RemoteJid: "0123456789@s.whatsapp.net",}, текст: "Привет, Whatsapp",} err: = wac.Send (текст)
Отправка контактных сообщений
contactMessage: = whatsapp.ContactMessage {Информация: whatsapp.MessageInfo {RemoteJid: "0123456789@s.whatsapp.net",}, DisplayName : "Люк Скайволлкер", Vcard: "НАЧАЛО: VCARD nВЕРСИЯ: 3.0 nN: Скайлуокер; Люк ;; nFN: Люк Скайволлкер nitem1.TEL; waid = 0123456789: +1 23 456789789 nitem1.X-ABLabel: Mobile nEND: VCARD ",} id, error: = client.WaConn.Send (contactMessage)
Сообщение будет отправлено через веб-сокет. Приведенные выше атрибуты являются обязательными. Все остальные соответствующие атрибуты (id, timestamp, fromMe, status) устанавливаются, если они отсутствуют в структуре. В настоящее время мы поддерживаем только текстовые сообщения, но в ближайшем будущем запланированы другие типы.
Legal
Этот код никоим образом не связан, не авторизован, не поддерживается, не спонсируется или не одобряется WhatsApp или любыми его аффилированными или дочерними компаниями. Это независимое и неофициальное программное обеспечение. Используйте на свой страх и риск.
Лицензия
Лицензия MIT (MIT)
Авторские права (c) 2018
Настоящим предоставляется бесплатное разрешение любому лицу, получающему копию этого программного обеспечения и связанных файлов документации («Программное обеспечение»), на использование Программного обеспечения без ограничений, в том числе без ограничение прав на использование, копирование, изменение, объединение, публикацию, распространение, сублицензирование и/или продажу копий Программного обеспечения, а также разрешение лицам, которым предоставляется Программное обеспечение, делать это при соблюдении следующих условий:
Приведенное выше уведомление об авторских правах и это уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ КОММЕРЧЕСКОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ И НЕЗАЩИТЫ ОТ ПРАВА. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ВЛАДЕЛЬЦЫ АВТОРСКИХ ПРАВ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГИЕ ОБЯЗАТЕЛЬСТВА, ПРОИЗВОДИМЫЕ В РЕЗУЛЬТАТЕ КОНТРАКТА, ПРАКТИЧЕСКИХ ПРАВ ИЛИ ИНЫХ СЛУЧАЙНЫХ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ИЛИ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. /p>