messages.send | VK для разработчиков
messages
Этот метод можно вызвать с ключом доступа пользователя, полученным в Standalone-приложении через Implicit Flow.
Требуются права доступа: messages.
Этот метод можно вызвать с ключом доступа сообщества.
Требуются права доступа: messages.
Параметры
user_id
string
Идентификатор пользователя, которому отправляется сообщение.
random_id
string
Число в пределах int32
— уникальный (в привязке к API_ID и ID отправителя) идентификатор, предназначенный для предотвращения повторной отправки одинакового сообщения. Сохраняется вместе с сообщением и доступен в истории сообщений.
Переданный в запросе random_id
используется для проверки уникальности, проверяя в заданном диалоге сообщения за последний час (но не более 100 последних сообщений).
peer_id
string
Идентификатор назначения.
Для пользователя:
- •
id
пользователя.
Для групповой беседы:
Для сообщества:
- •
-id
сообщества.
string
Идентификаторы получателей сообщения (при необходимости отправить сообщение сразу нескольким пользователям). Доступно только для ключа доступа сообщества. Максимальное количество идентификаторов: 100.
domain
string
Короткий адрес пользователя (например, illarionov
).
chat_id
string
Идентификатор беседы, к которой будет относиться сообщение.
user_ids
string
Идентификаторы получателей сообщения (при необходимости отправить сообщение сразу нескольким пользователям). Доступно только для ключа доступа сообщества. Максимальное количество идентификаторов: 100.
message
string
Текст личного сообщения. Обязательный параметр, если не задан параметр attachment
.
guid
string
Уникальный идентификатор, предназначенный для предотвращения повторной отправки одинакового сообщения.
lat
string
Географическая широта (от -90 до 90).
long
string
Географическая долгота (от -180 до 180).
attachment
string
Медиавложения к личному сообщению, перечисленные через запятую. Каждое прикрепление представлено в формате:
<type><owner_id>_<media_id>
<type>
— тип медиавложения:
- •
photo
— фотография; - •
video
— видеозапись; - •
audio
— аудиозапись; - •
doc
— документ; - •
wall
— запись на стене; - •
market
— товар; - •
poll
— опрос.
<owner_id>
— идентификатор владельца медиавложения (обратите внимание, если объект находится в сообществе, этот параметр должен быть отрицательным). <media_id>
— идентификатор медиавложения.
Например:
photo100172_166443618
Параметр является обязательным, если не задан параметр message
.
В случае, если прикрепляется объект, принадлежащий другому пользователю следует добавлять к вложению его access_key в формате <type><owner_id>_<media_id>_<access_key>
video85635407_165186811_69dff3de4372ae9b6e
reply_to
string
Идентификатор сообщения, на которое требуется ответить.
forward_messages
string
Идентификаторы пересылаемых сообщений, перечисленные через запятую. Перечисленные сообщения отправителя будут отображаться в теле письма у получателя. Не более 100 значений на верхнем уровне, максимальный уровень вложенности — 45, максимальное количество пересылаемых сообщений — 500.
Например:
123,431,544
forward
string
JSON-объект со следующими полями:
- •
owner_id
— владелец сообщений. Стоит передавать, если вы хотите переслать сообщения из сообщества в диалог; - •
peer_id
— идентификатор места, из которого необходимо переслать сообщения; - •
conversation_message_ids
— массивconversation_message_id
сообщений, которые необходимо переслать. В массивconversation_message_ids
можно передать сообщения:- •
находящиеся в личном диалоге с ботом;
- •
являющиеся исходящими сообщениями бота;
- •
написанными после того, как бот вступил в беседу и появился доступ к сообщениям.
- •
- •
message_ids
— массив id сообщений; - •
is_reply
— ответ на сообщения. Стоит передавать, если вы хотите ответить на сообщения в том чате, в котором находятся сообщения. При этом вconversation_message_ids
илиmessage_ids
должен находиться только один элемент.
sticker_id
string
Идентификатор стикера.
group_id
string
Идентификатор сообщества (для сообщений сообщества с ключом доступа пользователя).
keyboard
string
Объект, описывающий клавиатуру бота.
template
string
Объект, описывающий шаблон сообщения.
payload
string
Полезная нагрузка.
content_source
string
Объект в формате JSON, описывающий источник пользовательского контента для чат-ботов.
string
1
— не создавать сниппет ссылки из сообщения.
disable_mentions
string
1
— отключить уведомление об упоминании в сообщении.
intent
string
Строка, описывающая интенты.
subscribe_id
string
Параметр зарезервирован для использования в будущем. Число, которое будет использоваться для работы с интентами.
Результат
После успешного выполнения возвращает идентификатор отправленного сообщения.
Если передан параметр peer_ids
, возвращает массив объектов, каждый из которых содержит поля:
- •
peer_id
— идентификатор назначения; - •
message_id
— идентификатор сообщения; - •
conversation_message_id
— идентификатор сообщения в диалоге; - •
error
— сообщение об ошибке, если сообщение не было доставлено получателю.
Коды ошибок
104
Not found
900
Can’t send messages for users from blacklist
901
Can’t send messages for users without permission
902
Can’t send messages to this user due to their privacy settings
911
Keyboard format is invalid
912
This is a chat bot feature, change this status in settings
913
Too many forwarded messages
914
Message is too long
917
You don’t have access to this chat
921
Can’t forward these messages
922
You left this chat
925
You are not admin of this chat
936
Contact not found
940
Too many posts in messages
943
Cannot use this intent
944
Limits overflow for this intent
945
Chat was disabled
946
Chat not supported
950
Can’t send message, reply timed out
962
You can’t access donut chat without subscription
969
Message cannot be forwarded
В ходе выполнения могут произойти общие ошибки.
отправка сообщений в беседу в определенное время | BLASTHACK
JavaScript отключён. Чтобы полноценно использовать наш сайт, включите JavaScript в своём браузере.
- #1
Как сделать отправку сообщений в беседу от имени группы в вк в определенное время и с определенным сообщением для каждого времени? Примеров не нашел
Сортировка по дате Сортировка по голосам
- #2
Отправить гет запрос на апи вк
https://api. vk.com/method/messages.send?&peer_id=ид_беседы(если беседа группы только одна и единственная, то ид равен 2000000001)&message=сообщение&access_token=токен_группы_с_разрешением_на_отправку_сообщений&v=5.41
Позитивный голос 0 Негативный голос
- #3
Попробуй узнавать текущее время, задав перед этим значения(current_time_x) при которых будет выполняться отправка сообщения, и через потоки включить бота и эту функцию. (чтоб while не останавливал работу скрипта, логично)
import datetime import time as tm from threading import Thread current_time_1, current_time_2, current_time_3, current_time_4 = '21:30', '11:35', '7:10', '01:10' def checktime(): while True: time = datetime. datetime.now().strftime("%H:%M") if str(time) == current_time_1: """do something""" bot.send_message(message.chat.id, 'TEXT') else: pass if str(time) == current_time_2: """do something""" bot.send_message(message.chat.id, 'TEXT') else: pass if str(time) == current_time_3: """do something""" bot.send_message(message.chat.id, 'TEXT') else: pass if str(time) == current_time_4: """do something""" bot.send_message(message.chat.id, 'TEXT') else: pass tm.sleep(10) t1 = Thread(target=checktime) t1 = Thread(target=bot.polling(none_stop=True)) t1.start() t2.start()
Последнее редактирование:
Позитивный голос 1 Негативный голос
- #4
cron + if/elif
Позитивный голос -2 Негативный голос
Войдите или зарегистрируйтесь для ответа.
SF Plugin VKMessages
- Niko
- Читы 2 3
- Ответы
- 40
- Просмотры
- 13K
Читы
mgvq
[Lua] Telegram
- _RaDley_
- Вопросы
- Ответы
- 7
- Просмотры
- 537
Вопросы
yung milonov
[ОПРОС] Библиотека для создания приватных бесед в SAMP
- d3x. m4nt1s
- Lua
- Ответы
- 7
- Просмотры
- 3K
Lua
GRXSS
Проблема с кодировкой
- Lucifer_Dishamory
- Вопросы
- Ответы
- 3
- Просмотры
- 209
Вопросы
Котовский.
Ищу Ищу софт который для самп-стор
- feelzyourertry
- Помощь
- Ответы
- 0
- Просмотры
- 154
Помощь
feelzyourertry
Поделиться:
Поделиться Ссылка
Чат бот вконтакте. Как создать и для чего он нужен?
Содержание
- Существуют продвинутые и примитивные чат-боты
- Предназначение чат-ботов
- Рассмотрим примеры автоматизации работы путем применения ботов
- Создание «помощника» Вк
Чат бот является программой для общения с пользователями при помощи определенных команд. Благодаря робочатам обеспечивается автоматизация рутины.
Чат-боты (помощники) дают ответы на однотипные, часто задаваемые вопросы клиентов. Они предоставляют информацию о акционных и скидочных программах, делают расчет цены на товары и т.д. При общении пользователя с чат-ботом, программой проводится отправка сообщений, созданных заранее.
Компанией Just AI проводились исследования, в результате с которых было установлено, что в конце текущего года использование чат-ботов увеличилось в 2 раза по сравнению с предыдущим. Объем прибыли равен 524 млн. р. На 2023 год эксперты прогнозируют объем 33 млрд.р.
Существуют продвинутые и примитивные чат-боты
Общение с пользователем примитивных чат-ботов проводится в соответствии с заданными командами. Они присылают на вопросы ответы, имеющиеся в базе данных. При отсутствии в базе ответа на заданный вопрос бот его игнорирует или присылает сообщение о том, что не понимает пользователя или предоставляют возможность выбора одной из команд (напр. БОТ Займов).
Основа работы ботов продвинутого типа – искусственный интеллект. Их обучение происходит при общении с пользователями. У продвинутых программ, по сравнению с примитивными, расширенные возможности. Они могут к улавливать настроение и смысл сообщений, имеют связь с внешними базами данных, откуда идет передача информация.
Предназначение чат-ботов
Такого типа программы предназначаются для автоматизации однообразных переписок с клиентами и упрощения коммуникации. Бот пишется один раз, после чего может закрывать возражения, принимает заказы и отвечает на дополнительные вопросы пользователей. Коммуникация с пользователем требует минимального участия человека. Операторы и менеджеры становятся менее загруженными.
Робочат будет полезен для:
Рассмотрим примеры автоматизации работы путем применения ботов:
- Робочат «Медузы» показывает курс валют и новости. Она занимается поиском информации в соответствии с ключевыми словами.
- Бот пиццерии «Papa Johns» предоставляет помощь в заказе пиццы, занимается поиском истории заказов используя контакты.
- Woebot общается с людьми на разные темы, что облегчает работу психологов.
- Allstate – это чат-бот, который консультирует клиентов в вопросах страхования
Все эти программы направлены на экономию рабочего времени. К примеру, робочат в пиццерии переписывается с клиентом и передает менеджеру информацию о заказе.
Если компания не имеет большого количества клиентов и общение с ними разное, то нет необходимости в использовании и настойке чат-бота. Они используются в массовых сегментах – сервисах доставки, магазинах, новостных порталах.
Польза чат-ботов в сфере бизнеса
Создание «помощника» Вк
Для того чтобы создать чат бота, нужно воспользоваться услугами разработчика или самостоятельно разбираться с программой. Хабра предоставляет подробные инструкции.
Примитивный чат бот ВК создают самостоятельно с помощью сервисов BotVK, Chatgun, Robochat. На примере последнего сервиса рассмотрим этот процесс.
1. Первое что делаем — нажимаем «Создать чат-бот» и регистрируемся через Вк или e-mail. Далее проводим привязку сообщества, для которого создается программа.
4. Во вкладке нажимаем на шаблон, что приведет к открытию окна управления, которое имеет готовые алгоритмы действий. Программа отреагирует на сообщения-приветствия, подписки, отписки и неизвестные команды любого типа. Сообщения будут приходить в автоматическом режиме, но так же можно изменить.
2. Система запросит доступ в группу, который нужно предоставить. Иначе создать чат бот Вконтакте не выйдет. После этого от сервиса приходит подробная инструкция.
5. Во вкладке нажимаем на шаблон, что приведет к открытию окна управления, которое имеет готовые алгоритмы действий. Программа отреагирует на сообщения-приветствия, подписки, отписки и неизвестные команды любого типа. Сообщения будут приходить в автоматическом режиме, но так же можно изменить.
При нажатии на значок карандаша откроется специальное окно редактирования сообщения. Его можно изменить или создавать ответы в нескольких вариациях, которые отправляются чат-ботом с случайном порядке. Предоставляется возможность прикрепления смайлов или файлов к сообщениям. На этом этапе проводится настройка условий отправки, вставка макросов, например, с переменными, которые предоставляют возможность определения времени или города, называть клиента по имени. Это предоставит возможность создания индивидуальных сообщений.
При отсутствии информации о месте нахождения, дате, времени, то в этом поле вместо значения цифра «0».
3. Если сообщество/группа подключено, то появляется вкладка с шаблонами для создания вашего бота. Рассмотрим, как это делать, на примере.
6. Тут же проводится создание цепочек сообщений, прописывание алгоритма общения. Пользователь указывает ключевые слова, на которые робочат должен в дальнейшем реагировать. Предположительно вводимые клиентом ключевые слова прописываются в верхнем поле. В нижнем — отмечаем, как на них должен реагировать бот. Если пользователь использует одно из ключевых слов, то робочат пришлет ему соответствующее созданное вами сообщение. На завершающем этапе нажимаем «сохранить». Если хоть один символ в сообщении пользователя не будет отвечать ключевым словам, то ответа от помощника не поступит, поэтому рекомендуется прописать все вариации возможных запросов.
В заключение, возвращаемся в меню и настраиваем реакции на другие действия клиентов. Робочат предполагает реакцию на любые файлы – товары, картинки, аудиосообщения, стикеры и т.д.
Robochat – это уникальный сервис создания «помощника» всего за несколько минут. Если изучить настойку, и потратить чуть больше времени, то можно создать полноценного помощника для автоматизации рутины.
node-vk-bot — Анализ работоспособности пакетов npm
Все уязвимости безопасности относятся к производственных зависимостей прямых и косвенных пакеты.
Угроза безопасности и лицензии для основных версий
Все версии
Версия | Уязвимости | Лицензионный риск | |||
---|---|---|---|---|---|
12/2018 | Популярный |
|
| ||
1. 1.0 | | | 09/2018 |
| 0. 3.1 | | | 06/2018 |
|
|
0. 2.6 | | | 03/2018 |
|
| |
0. 1.5 | | | 02/2017 |
|
|
Ваш проект подвержен уязвимостям?
Сканируйте свои проекты на наличие уязвимостей. Быстро исправить с помощью автоматизированного исправления. Начните работу со Snyk бесплатно.
Начните бесплатно
Еженедельные загрузки (19)
Скачать тренд
- Иждивенцы
- 0
- Звезды GitHub
- 34
- Вилки
- 11
- Авторы
- 9
Популярность прямого использования
Пакет npm node-vk-bot получает в общей сложности 19скачиваний в неделю. Таким образом, мы забили Уровень популярности node-vk-bot будет ограничен.
На основе статистики проекта из репозитория GitHub для npm пакет node-vk-bot, мы обнаружили, что он был снялся 34 раза, и это 0 других проектов в экосистеме зависят от него.
Загрузки рассчитываются как скользящие средние за период из последних 12 месяцев, за исключением выходных и известных отсутствующих точек данных.
Частота фиксации
Нет последних коммитов
- Открытые проблемы
- 4
- Открытый заказ на продажу
- 0
- Последняя версия
- 4 года назад
- Последняя фиксация
- 4 года назад
Дальнейший анализ состояния обслуживания node-vk-bot на основе каденция выпущенных версий npm, активность репозитория, и другие точки данных определили, что его обслуживание Неактивный.
Важным сигналом обслуживания проекта, который следует учитывать для node-vk-bot, является это не видел никаких новых версий, выпущенных для npm в за последние 12 месяцев и может считаться прекращенным проектом или проектом, который получает мало внимания со стороны его сопровождающих.
За последний месяц мы не обнаружили никаких запросов на вытягивание или изменений в статус issue был обнаружен для репозитория GitHub.
- Совместимость Node.js
- не определено
- Возраст
- 6 лет
- Зависимости
- 3 прямых
- Версии
- 36
- Установочный размер
- 66 КБ
- Распределенные теги
- 1
- Количество файлов
- 113
- Обслуживающий персонал
- 1
- Типы TS
- Да
node-vk-bot имеет более одного и последнего тега по умолчанию, опубликованного для пакет нпм. Это означает, что для этого могут быть доступны другие теги. пакет, например рядом, чтобы указать будущие выпуски, или стабильный, чтобы указать стабильные релизы.
Настройки источников — PosterBot для Telegram
The PosterBotОписание всех доступных настроек и функций.
Ниже приведены все существующие настройки источника; их доступность может зависеть от типа источника.
Навигация
- Внешний вид
- Фильтры
- Вложения
- Доставка
Внешний вид
Этот раздел отвечает за то, как сообщения, доставляемые ботом, будут выглядеть в вашем чате или канале.
Ссылка на источник
Если включено: бот будет отправлять ссылку на оригинальный пост в социальной сети отдельным сообщением (например: Пост с публичной страницы...
)
Реакции
Если включено: кнопки с реакциями будут добавлены ко всем сообщениям в канале, с ними подписчики смогут оценить сообщение.
Авто-реакции: если указать определенные слова, то бот добавит кнопки только к тем постам, где эти слова содержатся (например: публикации со словом лайк
)
Дополнительный текст
Если добавил: бот добавит в текст поста свой текст, который может содержать, например, ссылку на ваш канал. Кроме того, вы можете выбрать место, куда будет добавляться текст — до или после текста основного сообщения.
Удалить #теги
Если включено: все теги будут удалены из текста сообщения (например: #интересно
)
Удалить «@ …» из тегов
Если включено: Админы ВКонтакте часто добавляют логины своих публичных страниц в теги для удобства навигации. Чтобы удалить эти логины и оставить только теги, включите этот параметр (например: #tag@author
превратится в #tag
)
Отправить текст
Если включено: бот отправит текст сообщения сообщение, если отключено, будут доставлены только вложения (если включено).
Удалить ссылки
Этот параметр доступен только для источников Twitter.
Если включено: все ссылки на внешние сайты будут удалены из текста сообщения.
Отправить заголовок
Этот параметр доступен только для источников RSS и источников YouTube.
Если включено: бот будет включать заголовок поста или видео в тело сообщения.
Форматирование сообщений
Этот параметр доступен только для источников RSS.
Используя этот параметр, вы можете настроить способ отправки сообщения с RSS-канал.
Отправить ссылки
Этот параметр доступен только для источников RSS.
Если включено: бот будет включать в сообщение URL-ссылку на исходную публикацию из RSS.
Текст для аудио
Эта настройка доступна только для источников ВКонтакте.
Если добавить текст: бот добавит описание к каждому аудиофайлу (например, таким образом можно добавить логин своего канала).
Доставка в Телеграф
Эта настройка доступна только для источников ВКонтакте.
Если включено: бот будет создавать статью в Telegraph для каждой записи ВК, с помощью SmartGraph можно указать количество символов после которого такие статьи будут создаваться.
Отправить местоположение
Этот параметр доступен только для источников Instagram.
Если включено: бот будет публиковать локацию под фото или видео с Instagram, если он есть в оригинальной публикации.
Эта настройка доступна только для источников ВКонтакте.
Если включено: бот будет добавлять к каждому сообщению кнопку, с помощью которой будут открываться комментарии, созданные через @CommentsBot.
Удалить ссылки t.me
Эта настройка доступна только для источников Telegram.
Если включено: бот удалит из текста сообщения все ссылки, содержащие адрес t. me.
Отправить автора
Эта настройка доступна только для источников ВКонтакте.
Если включено: бот добавит в текст сообщения имя автора, предложившего пост, и ссылку на его страницу ВКонтакте.
Разметка HTML
Эта настройка доступна только для источников ВКонтакте, Instagram и Twitter.
Если включено: все сообщения будут отформатированы с разметкой HTML, так что вы можете добавить ссылки или любое другое форматирование в дополнительный текст.
↑ Назад к навигации
Фильтры
Этот раздел отвечает за то, какие записи будут приходить на ваш канал или в чат, а какие нет.
Фильтр по лайкам
С помощью этого фильтра вы можете указать количество лайков, которое должен получить пост, чтобы бот опубликовал его на вашем канале.
Стоп-слова
Если указаны слова: бот не отправит запись, если она содержит хотя бы одно слово из заданного списка.
Ключевые слова
Если указаны слова: бот не отправит запись, если она не содержит хотя бы одно слово из заданного списка.
Посты со ссылками
Если отключено: бот не будет отправлять сообщения, содержащие ссылки. Обычно ссылки содержатся в рекламных постах, поэтому этот параметр также фильтрует рекламу.
Ограничение по фотографиям
С помощью этой настройки вы можете установить максимальное количество фотографий в посте — если их больше указанного количества, бот не будет отправлять пост.
Отправлять репосты
Если включено: бот будет отправлять репосты или ретвиты.
Посты с аудио
Эта настройка доступна только для источников ВКонтакте.
Если включено: бот будет отправлять посты, к которым прикреплены аудиофайлы.
Посты с Вики
Эта настройка доступна только для источников ВКонтакте.
Если включено: бот будет отправлять сообщения, к которым прикреплены вики-страницы.
Горшки с видео
Если включено: бот будет отправлять посты, к которым прикреплены видеофайлы.
Посты с фото
Если включено: бот будет отправлять посты, к которым прикреплены фото.
Размещено пользователями
Для групп ВК, если включено: бот будет публиковать все посты со стены.
Посты с опросами
Если включено: бот будет отправлять посты, к которым прикреплены опросы.
Этот параметр доступен только для источников Twitter.
Если включено: бот будет отправлять ответы пользователей на другие твиты.
↑ Назад к навигации
Вложения
Этот раздел отвечает за то, какие файлы бот будет отправлять в ваши каналы и чаты.
Аудио
Если включено: бот будет отправлять аудиофайлы на ваш канал или в чат.
Документы
Если включено: бот отправит документы до 50мб из ВК на ваш канал или в чат.
GIF-анимации
Если включено: бот будет отправлять GIF на ваш канал или в чат.
Ссылки в виде вложений
Если включено: бот будет отправлять ссылки прикрепленные к сообщению отдельным сообщением.
Видео
Если включено, для ВК: бот будет присылать ссылки на прикрепленные к посту видео.
Если включено, для других источников: бот будет отправлять видео файлы если их размер не превышает 50мб .
Фото
Если включено: бот будет отправлять все фото из поста.
Первое фото + текст
Эта настройка доступна только для источников ВКонтакте.
Если включено: бот отправит только первое фото и текст поста.
Отправить опросы
Эта настройка доступна только для источников ВКонтакте.
Если включено: бот будет отправлять опросы из ВК как нативные опросы в Telegram.
Отправить истории
Этот параметр доступен только для источников Instagram.
Если включено: каждые 6 часов бот будет отправлять последние истории из профиля Instagram.
HD-фотографии
Этот параметр доступен только для источников Facebook.
Если включено: бот будет отправлять фотографии в высоком разрешении. По умолчанию эта опция отключена, чтобы свести к минимуму запросы к Facebook и ускорить доставку.
Отправить видео
Этот параметр доступен только для источников YouTube.
Если включено: бот загрузит видео с YouTube на ваш канал или в чат. Однако боты не могут загружать длинные видео размером более 50 МБ.
Отправить аудио
Этот параметр доступен только для источников YouTube.
Если включено: бот будет загружать YouTube аудио на ваш канал или в чат. Однако боты не могут загружать длинные аудиофайлы размером более 50 МБ.
↑ Назад к навигации
Доставка
Этот раздел отвечает за то, как сообщения будут поступать в ваши каналы и чаты.
Отправить «тихо»
Если включено: бот будет отправлять все сообщения в тихом режиме.
Время между сообщениями
Если установлено время: бот будет отправлять только один пост в заданный период (например, одно сообщение в час), чтобы не засорять канал потоком новых публикаций.
Часы доставки сообщений
Если установлено время: бот будет отправлять сообщения в ваши каналы и чаты только в определенное время суток (например, вы можете настроить доставку сообщений с 8:00 до 21:00, чтобы сообщения не приехать ночью).
↑ Назад к навигации
Если у вас остались вопросы, вы можете связаться с нами с помощью команды /ask
в боте.
Внедрение нового адаптера :: Joe Bot
Адаптеры позволяют вам взаимодействовать с внешним миром, получая и отправляя сообщения. В настоящее время у Джо есть следующие семь реализаций адаптера:
- CLI-адаптер: https://github.com/go-joe/joe
- Slack-адаптер: https://github.com/go-joe/slack-adapter
- Адаптер Rocket.Chat: https://github.com/dwmunster/rocket-adapter
- Адаптер Telegram: https://github.com/robertgzr/joe-telegram-adapter
- IRC-адаптер: https://github.com/akrennmair/joe-irc-adapter
- Адаптер Mattermost: https://github.com/dwmunster/joe-mattermost-adapter
- Адаптер ВК: https://github.com/tdakkota/joe-vk-adapter
Если вы хотите интегрироваться со службой чата, которой нет в списке выше, вы можете напишите свою собственную реализацию адаптера.
Адаптеры являются модулями
Во-первых, ваш адаптер должен быть доступен как joe.Module
, чтобы он мог
легко интегрируется в бота с помощью функции joe.New(…)
.
Интерфейс модуля
выглядит следующим образом:
// Модуль — это дополнительное расширение бота, которое может добавлять новые возможности, такие как // другая реализация памяти или адаптер. тип Интерфейс модуля { Применить (*Конфигурация) ошибка }
Для простой реализации модуля без объявления функции Применить
на
вашего типа адаптера чата, вы можете использовать тип joe.ModuleFunc
. Например,
Адаптер Slack использует следующее для реализации своей функции Adapter(…)
:
// Адаптер возвращает новый адаптер Slack как joe.Module. // // Помимо типичного события joe.ReceiveMessageEvent, этот адаптер также генерирует // событие joe.UserTypingEvent. Поле ReceiveMessageEvent.Data всегда // указатель на соответствующий экземпляр github.com/nlopes/slack.MessageEvent. func Adapter (строка маркера, опции ... Опция) joe.Module { вернуть ошибку joe.ModuleFunc (func (joeConf * joe.Config) { conf, err := newConf(токен, joeConf, опции) если ошибка != ноль { вернуть ошибку } а, ошибка: = NewAdapter (joeConf.Context, conf) если ошибка != ноль { вернуть ошибку } joeConf.SetAdapter(a) вернуть ноль }) }
Переданный параметр *joe. Config
можно использовать для поиска общих параметров, таких как
контекст . Контекст
, используемый ботом. Кроме того, вы можете создать именованный
logger через функцию Config.Logger(…)
, и вы можете зарегистрировать дополнительные обработчики
или генерировать события через функцию Config.EventEmitter() .
Наиболее важным для реализации адаптера является то, что он, наконец, нуждается
зарегистрироваться через Config.SetAdapter(…) 9Функция 0448.
Определив функцию Adapter(…)
в вашем пакете, теперь можно использовать
ваш адаптер как модуль перешел на joe.New(…)
. Кроме того, ваш NewAdapter(…)
Функция полезна для непосредственного создания нового экземпляра адаптера, который можно использовать
во время модульных тестов. И последнее, но не менее важное: шаблон опционов оказался полезным в
такая установка и считается хорошей практикой при написании модулей в целом.
Интерфейс адаптера
// Адаптер соединяет бота с чатом, позволяя ему получать и отправлять // Сообщения. Кроме того, расширенные адаптеры могут генерировать больше событий, чем просто // ReceiveMessageEvent (например, слабый адаптер также генерирует событие UserTypingEvent). // Все события адаптера должны быть настроены в функции RegisterAt адаптера. // // Джо предоставляет реализацию CLIAdapter по умолчанию, которая соединяет бота с // локальная оболочка для получения сообщений со стандартного ввода и вывода сообщений на стандартный вывод. тип интерфейса адаптера { Зарегистрируйтесь в (* Мозг) Ошибка отправки (текст, строка канала) Закрыть() ошибка }
Наиболее простой функцией для реализации должна быть Отправить(…)
и Закрыть(…)
функций. Функция Отправить
должна выводить заданный текст в
указанный канал как Bot. Начальное соединение и аутентификация для отправки
эти сообщения должны были быть настроены ранее вашей функцией адаптера
как
показано выше. Когда бот выключится, он вызовет функцию Close()
ваш адаптер, чтобы вы могли разорвать соединение и освободить все ресурсы, которые вы
открылись.
Чтобы также получать сообщения и передавать их обработчику событий Джо, вы
необходимо реализовать функцию RegisterAt(*joe.Brain)
. Эта функция вызывается
во время настройки бота и позволяет адаптеру напрямую обращаться к Мозгу.
Эта функция не должна блокироваться и поэтому обычно порождает новую горутину, которая
должна быть остановлена, когда функция Close()
реализации вашего адаптера
называется.
В этой горутине вы должны прослушивать новые сообщения из вашего чат-приложения
(например, через обратный вызов или опрос). При получении нового сообщения необходимо
выдать это как joe.ReceiveMessageEvent
в мозг.
для адаптера Slack это выглядит так:
func (a *BotAdapter) handleMessageEvent(ev *slack.MessageEvent, brain *joe.Brain) { // Проверяем, исходит ли сообщение от нас самих. если ev.User == a.userID { // Сообщение от нас, игнорируйте его! возвращаться } // Проверяем, есть ли у нас прямое сообщение или стандартное сообщение канала. selfLink := a.userLink(a.userID) прямой := strings.HasPrefix(ev.Msg.Channel, "D") если !direct && !strings.Contains(ev.Msg.Text, selfLink) { // Сообщение не для нас! возвращаться } текст: = strings.TrimSpace(strings.TrimPrefix(ev.Text, selfLink)) brain.Emit(Джо.ReceiveMessageEvent{ Текст: текст, Канал: ev.Channel, ID: ev.Timestamp, // slack использует временные метки сообщений в качестве идентификаторов внутри канала ID автора: ev.User, Данные: эв, }) }
В приведенном выше фрагменте вы можете увидеть некоторые из распространенных ошибок:
- адаптер должен игнорировать свои собственные сообщения, иначе он рискует попасть в бесконечный цикл
- адаптер должен убедиться, что сообщение действительно предназначено для бота
- возможно сообщение нужно обрезать
- вы должны попробовать заполнить все поля
joe.ReceiveMessageEvent
Дополнительные интерфейсы
В настоящее время существует только один дополнительный интерфейс, который может быть реализован с помощью
Адаптер, который является joe.