whatsapp-api-client-golang - библиотека для интеграции с мессенджером WhatsApp через API сервиса green-api.com. Чтобы воспользоваться библиотекой, нужно получить регистрационный токен и ID аккаунта в личном кабинете. Есть бесплатный тариф аккаунта разработчика.
Документация к REST API находится по ссылке. Библиотека является оберткой к REST API, поэтому документация по ссылке выше применима и к самой библиотеке.
Чтобы отправить сообщение или выполнить другие методы Green API, аккаунт WhatsApp в приложении телефона должен быть в авторизованном состоянии. Для авторизации аккаунта перейдите в личный кабинет и сканируйте QR-код с использованием приложения WhatsApp.
Не забудьте создать модуль:
go mod init example
Установка:
go get github.com/green-api/whatsapp-api-client-golang
import (
"github.com/green-api/whatsapp-api-client-golang/pkg/api"
)
GreenAPI := api.GreenAPI{
IDInstance: "1101000001",
APITokenInstance: "d75b3a66374942c5b3c019c698abc2067e151558acbd412345",
}
Обратите внимание, что ключи можно получать из переменных среды:
IDInstance := os.Getenv("ID_INSTANCE")
APITokenInstance := os.Getenv("API_TOKEN_INSTANCE")
Ссылка на пример: createGroup/main.go.
response, _ := GreenAPI.Methods().Groups().CreateGroup("groupName", []string{
"[email protected]",
"[email protected]",
})
Чтобы отправить файл, нужно указать первым параметром путь к нужному документу.
Ссылка на пример: sendFileByUpload/main.go.
response, _ := GreenAPI.Methods().Sending().SendFileByUpload("example.png", map[string]interface{}{
"chatId": "[email protected]",
})
Ссылка на пример: sendFileByURL/main.go.
response, _ := GreenAPI.Methods().Sending().SendFileByUrl(map[string]interface{}{
"chatId": "[email protected]",
"urlFile": "https://go.dev/blog/go-brand/Go-Logo/SVG/Go-Logo_Blue.svg",
"fileName": "Go-Logo_Blue.svg",
})
Если у метода API есть необязательные параметры, то в метод библиотеки нужно передавать JSON (map[string]interface{}
).
Ссылка на пример: sendMessage/main.go.
response, _ := GreenAPI.Methods().Sending().SendMessage(map[string]interface{}{
"chatId": "[email protected]",
"message": "Any message",
})
Чтобы начать получать уведомления, нужно передать функцию-обработчик в Webhook().Start
. Функция-обработчик должна
содержать 1 параметр (body map[string]interface{}
). При получении нового уведомления ваша функция-обработчик будет
выполнена. Чтобы перестать получать уведомления, нужно вызвать функцию Webhook().Stop
.
Ссылка на пример: webhook/main.go.
GreenAPIWebhook := GreenAPI.Webhook()
GreenAPIWebhook.Start(func(body map[string]interface{}) {
fmt.Println(body)
})
Если у метода API есть необязательные параметры, то в метод библиотеки нужно передавать JSON (map[string]interface{}
).
Ссылка на пример: sendPoll/main.go.
response, err := GreenAPI.Methods().Sending().SendPoll(map[string]interface{}{
"chatId": "[email protected]",
"message": "Please choose a color:",
"options": []map[string]interface{}{
{
"optionName": "Red",
},
{
"optionName": "Green",
},
{
"optionName": "Blue",
},
},
})
Описание | Ссылка на пример |
---|---|
Как создать группу | createGroup/main.go |
Как отправить файл загрузкой с диска | sendFileByUpload/main.go |
Как отправить файл по ссылке | sendFileByURL/main.go |
Как отправить сообщение | sendMessage/main.go |
Как получать входящие уведомления | webhook/main.go |
Как отправить сообщение с опросом | sendPoll/main.go |
Метод API | Описание | Documentation link |
---|---|---|
Account().GetSettings |
Метод предназначен для получения текущих настроек аккаунта | GetSettings |
Account().GetWaSettings |
Метод предназначен для получения информации о аккаунте WhatsApp | GetWaSettings |
Account().SetSettings |
Метод предназначен для установки настроек аккаунта | SetSettings |
Account().GetStateInstance |
Метод предназначен для получения состояния аккаунта | GetStateInstance |
Account().GetStatusInstance |
Метод предназначен для получения состояния сокета соединения инстанса аккаунта с WhatsApp | GetStatusInstance |
Account().Reboot |
Метод предназначен для перезапуска аккаунта | Reboot |
Account().Logout |
Метод предназначен для разлогинивания аккаунта | Logout |
Account().QR |
Метод предназначен для получения QR-кода | QR |
Account().SetProfilePicture |
Метод предназначен для установки аватара аккаунта | SetProfilePicture |
Account().GetAuthorizationCode |
Метод предназначен для авторизации инстанса по номеру телефона | GetAuthorizationCode |
Device().GetDeviceInfo |
Метод предназначен для получения информации об устройстве (телефоне), на котором запущено приложение WhatsApp Business | GetDeviceInfo |
Groups().CreateGroup |
Метод предназначен для создания группового чата | CreateGroup |
Groups().UpdateGroupName |
Метод изменяет наименование группового чата | UpdateGroupName |
Groups().GetGroupData |
Метод получает данные группового чата | GetGroupData |
Groups().AddGroupParticipant |
Метод добавляет участника в групповой чат | AddGroupParticipant |
Groups().RemoveGroupParticipant |
Метод удаляет участника из группового чата | RemoveGroupParticipant |
Groups().SetGroupAdmin |
Метод назначает участника группового чата администратором | SetGroupAdmin |
Groups().RemoveAdmin |
Метод лишает участника прав администрирования группового чата | RemoveAdmin |
Groups().SetGroupPicture |
Метод устанавливает аватар группы | SetGroupPicture |
Groups().LeaveGroup |
Метод производит выход пользователя текущего аккаунта из группового чата | LeaveGroup |
Journals().GetChatHistory |
Метод возвращает историю сообщений чата | GetChatHistory |
Journals().GetMessage |
Метод возвращает сообщение чата | GetMessage |
Journals().LastIncomingMessages |
Метод возвращает крайние входящие сообщения аккаунта | LastIncomingMessages |
Journals().LastOutgoingMessages |
Метод возвращает крайние отправленные сообщения аккаунта | LastOutgoingMessages |
Queues().ShowMessagesQueue |
Метод предназначен для получения списка сообщений, находящихся в очереди на отправку | ShowMessagesQueue |
Queues().ClearMessagesQueue |
Метод предназначен для очистки очереди сообщений на отправку | ClearMessagesQueue |
ReadMark().ReadChat |
Метод предназначен для отметки сообщений в чате прочитанными | ReadChat |
Receiving().ReceiveNotification |
Метод предназначен для получения одного входящего уведомления из очереди уведомлений | ReceiveNotification |
Receiving().DeleteNotification |
Метод предназначен для удаления входящего уведомления из очереди уведомлений | DeleteNotification |
Receiving().DownloadFile |
Метод предназначен для скачивания принятых и отправленных файлов | DownloadFile |
Sending().SendMessage |
Метод предназначен для отправки текстового сообщения в личный или групповой чат | SendMessage |
Sending().SendButtons |
Метод предназначен для отправки сообщения с кнопками в личный или групповой чат | SendButtons |
Sending().SendTemplateButtons |
Метод предназначен для отправки сообщения с интерактивными кнопками из перечня шаблонов в личный или групповой чат | SendTemplateButtons |
Sending().SendListMessage |
Метод предназначен для отправки сообщения с кнопкой выбора из списка значений в личный или групповой чат | SendListMessage |
Sending().SendFileByUpload |
Метод предназначен для отправки файла, загружаемого через форму (form-data) | SendFileByUpload |
Sending().SendFileByUrl |
Метод предназначен для отправки файла, загружаемого по ссылке | SendFileByUrl |
Sending().UploadFile |
Метод предназначен для загрузки файла в облачное хранилище, который можно отправить методом SendFileByUrl | UploadFile |
Sending().SendLocation |
Метод предназначен для отправки сообщения геолокации | SendLocation |
Sending().SendContact |
Метод предназначен для отправки сообщения с контактом | SendContact |
Sending().SendLink |
Метод предназначен для отправки сообщения со ссылкой, по которой будут добавлены превью изображения, заголовок и описание | SendLink |
Sending().ForwardMessages |
Метод предназначен для пересылки сообщений в личный или групповой чат | ForwardMessages |
Sending().UploadFile |
Метод позволяет выгружать файл из локальной файловой системы, который позднее можно отправить методом SendFileByUrl | UploadFile |
Sending().SendPoll |
Метод предназначен для отправки сообщения с опросом в личный или групповой чат | SendPoll |
Service().CheckWhatsapp |
Метод проверяет наличие аккаунта WhatsApp на номере телефона | CheckWhatsapp |
Service().GetAvatar |
Метод возвращает аватар корреспондента или группового чата | GetAvatar |
Service().GetContacts |
Метод предназначен для получения списка контактов текущего аккаунта | GetContacts |
Service().GetContactInfo |
Метод предназначен для получения информации о контакте | GetContactInfo |
Service().DeleteMessage |
Метод удаляет сообщение из чата | DeleteMessage |
Service().ArchiveChat |
Метод архивирует чат | ArchiveChat |
Service().UnarchiveChat |
Метод разархивирует чат | UnarchiveChat |
Service().SetDisappearingChat |
Метод предназначен для изменения настроек исчезающих сообщений в чатах | SetDisappearingChat |
Webhook().Start |
Метод предназначен для старта получения новых уведомлений | |
Webhook().Stop |
Метод предназначен для остановки получения новых уведомлений |
Документация по методам сервиса.
Лицензировано на условиях Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) . Смотрите файл LICENSE.