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-golangimport (
"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{
"11001234567@c.us",
"11002345678@c.us",
})
Чтобы отправить файл, нужно указать первым параметром путь к нужному документу.
Ссылка на пример: sendFileByUpload/main.go.
response, _ := GreenAPI.Methods().Sending().SendFileByUpload("example.png", map[string]any{
"chatId": "11001234567@c.us",
})
Ссылка на пример: sendFileByURL/main.go.
response, _ := GreenAPI.Methods().Sending().SendFileByUrl(map[string]any{
"chatId": "11001234567@c.us",
"urlFile": "https://go.dev/blog/go-brand/Go-Logo/SVG/Go-Logo_Blue.svg",
"fileName": "Go-Logo_Blue.svg",
})
Если у метода API есть необязательные параметры, то в метод библиотеки нужно передавать JSON (map[string]any).
Ссылка на пример: sendMessage/main.go.
response, _ := GreenAPI.Methods().Sending().SendMessage(map[string]any{
"chatId": "11001234567@c.us",
"message": "Any message",
})
Чтобы начать получать уведомления, нужно передать функцию-обработчик в Webhook().Start. Функция-обработчик должна
содержать 1 параметр (body map[string]any). При получении нового уведомления ваша функция-обработчик будет
выполнена. Чтобы перестать получать уведомления, нужно вызвать функцию Webhook().Stop.
Ссылка на пример: webhook/main.go.
GreenAPIWebhook := GreenAPI.Webhook()
GreenAPIWebhook.Start(func(body map[string]any) {
log.Println(body)
})
Если у метода API есть необязательные параметры, то в метод библиотеки нужно передавать JSON (map[string]any).
Ссылка на пример: sendPoll/main.go.
response, err := GreenAPI.Methods().Sending().SendPoll(map[string]any{
"chatId": "11001234567@c.us",
"message": "Please choose a color:",
"options": []map[string]any{
{
"optionName": "Red",
},
{
"optionName": "Green",
},
{
"optionName": "Blue",
},
},
})
Ссылка на пример: sendInteractiveButtons/main.go.
buttons := []map[string]any{
{
"type": "copy",
"buttonId": "1",
"buttonText": "Copy me",
"copyCode": "3333",
},
{
"type": "call",
"buttonId": "2",
"buttonText": "Call me",
"phoneNumber": "79123456789",
},
{
"type": "url",
"buttonId": "3",
"buttonText": "Green-api",
"url": "https://green-api.com",
},
}
parameters := map[string]any{
"chatId": "11001234567@c.us",
"body": "Main message text",
"header": "Message header",
"footer": "Message footer",
"buttons": buttons,
}
response, err := GreenAPI.Methods().Sending().SendInteractiveButtons(parameters)
if err != nil {
log.Fatal(err)
}
Если у метода API есть дополнительные параметры, вам необходимо передать JSON через метод библиотеки (map[string]any).
Ссылка на пример: sendStatus/main.go.
response, _ := GreenAPI.Methods().Status().SendTextStatus(map[string]any{
"message": "I used Green API GO SDK to send this status!",
"backgroundColor": "#87CEEB",
"font": "SERIF",
})
| Описание | Ссылка на пример |
|---|---|
| Как создать группу | createGroup/main.go |
| Как отправить файл загрузкой с диска | sendFileByUpload/main.go |
| Как отправить файл по ссылке | sendFileByURL/main.go |
| Как отправить сообщение | sendMessage/main.go |
| Как получать входящие уведомления | webhook/main.go |
| Как отправить сообщение с опросом | sendPoll/main.go |
| Как отправить интерактивные кнопки | sendInteractiveButtons/main.go |
| Как отправить интерактивные кнопки с ответом | sendInteractiveButtonsReply/main.go |
| Как отправить текстовый статус | sendStatus/main.go |
| Как создать инстанс (парнетрский метод) | createInstance/main.go |
| Как отредактировать сообщение | editMessage/main.go |
| Как пересылать сообщения | sendForwardMessages/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 |
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 |
Status().SendTextStatus |
Метод предназначен для отправки текстового статуса | SendTextStatus |
Status().SendVoiceStatus |
Метод предназначен для отправки голосового статуса | SendVoiceStatus |
Status().SendMediaStatus |
Метод предназначен для отправки медиа-файлов | SendMediaStatus |
Status().GetOutgoingStatuses |
Метод возвращает крайние исходящие статусы аккаунта | GetOutgoingStatuses |
Status().GetIncomingStatuses |
Метод возвращает крайние входящие статусы аккаунта | GetIncomingStatuses |
Status().GetStatusStatistic |
Метод возвращает массив получателей со статусами | GetStatusStatistic |
Status().DeleteStatus |
Метод предназначен для удаления статуса | DeleteStatus |
| 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().SendFileByUpload | Метод предназначен для отправки файла, загружаемого через форму (form-data) | SendFileByUpload |
| Sending().SendFileByUrl | Метод предназначен для отправки файла, загружаемого по ссылке | SendFileByUrl |
| Sending().UploadFile | Метод предназначен для загрузки файла в облачное хранилище, который можно отправить методом SendFileByUrl | UploadFile |
| Sending().SendLocation | Метод предназначен для отправки сообщения геолокации | SendLocation |
| Sending().SendContact | Метод предназначен для отправки сообщения с контактом | SendContact |
| Sending().ForwardMessages | Метод предназначен для пересылки сообщений в личный или групповой чат | ForwardMessages |
| Sending().UploadFile | Метод позволяет выгружать файл из локальной файловой системы, который позднее можно отправить методом SendFileByUrl | UploadFile |
| Sending().SendPoll | Метод предназначен для отправки сообщения с опросом в личный или групповой чат | SendPoll |
| Sending().SendInteractiveButtons | Метод предназначен для отправки интерактивных кнопок | SendInteractiveButtons |
| Sending().SendInteractiveButtonsReply | Метод предназначен для отправки интерактивных кнопок с ответом | SendInteractiveButtonsReply |
| 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 |
| Service().EditMessage | Этот метод заключается в редактировании текстового сообщения в личном или групповом чате. | EditMessage |
| Webhook().Start | Метод предназначен для старта получения новых уведомлений | |
| Webhook().Stop | Метод предназначен для остановки получения новых уведомлений | |
Документация по методам сервиса.
Лицензировано на условиях Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) . Смотрите файл LICENSE.