简体中文 English 繁體中文 日本語 Русский
本文为静态镜像,内容以交互版为准 在交互式文档中心打开 →

Адаптер WeChatMp - Документация по функциональности платформы

Основная информация

Обновление парадигмы v5 (4.2.0)


Поддерживаемые возможности платформ

Поддерживаемые типы отправки сообщений

Метод Описание API WeChat
Text(text) Отправка текста Клиентская поддержка message/custom/send
Image(file) Отправка изображения (автоматическая загрузка для получения media_id) Клиентская поддержка + media/upload
Voice(file) Отправка голосового сообщения (автоматическая загрузка для получения media_id) Клиентская поддержка + media/upload
Video(file, title, description) Отправка видео (автоматическая загрузка для получения media_id) Клиентская поддержка + media/upload
Music(url, title, description, ...) Отправка музыки Клиентская поддержка
News(articles) Отправка сообщения с изображением и текстом Клиентская поддержка
Template(template_id, data, url) Отправка шаблонного сообщения message/template/send
Menu(head_content, list, tail_content) Отправка сообщения с меню Клиентская поддержка msgmenu
Raw_ob12(message) Отправка сообщения в формате OneBot12 -

Описание медиафайлов

Важные ограничения

Типы событий

События сообщений (message)

Все сообщения от пользователей имеют detail_type: private (сценарий 1v1 для публичных аккаунтов).

Тип сообщения WeChat Тип сегмента сообщения Описание
text text Текстовое сообщение
image image Сообщение с изображением
voice voice Голосовое сообщение (с результатом распознавания речи)
video video Видеосообщение
shortvideo video Короткое видео (отмечено mp_shortvideo)
location location Сообщение с геолокацией
link text Сообщение с ссылкой (преобразуется в текст)

События уведомлений (notice)

Типы событий различаются по полю mp_event.

Событие WeChat mp_event Описание
subscribe subscribe Подписка на публичный аккаунт
unsubscribe unsubscribe Отмена подписки
SCAN scan Сканирование QR-кода с параметрами
LOCATION location_report Отправка геолокации
CLICK menu_click Нажатие на пользовательское меню
VIEW menu_view Переход по ссылке из меню
TEMPLATESENDJOBFINISH template_send_finish Результат отправки шаблонного сообщения
MASSSENDJOBFINISH mass_send_finish Результат массовой рассылки сообщений

Расширение платформы

Поле, специфичное для WeChat, в объекте события (префикс mp_):

Поле Тип Описание
mp_raw str Исходные XML-данные
mp_raw_type str Тип исходного сообщения/события
mp_msg_id str ID сообщения WeChat
mp_event str Тип события (только для уведомлений о событиях)
mp_event_key str Ключ события (нажатие меню/сканирование и т.д.)
mp_to_user str Ответный微信号 (оригинальный ID публичного аккаунта)
mp_from_user str Отправитель OpenID
mp_data dict Данные XML, разобранные в словарь

Методы расширения событий

Регистрируются с помощью register_event_mixin("mp", ...), после чего можно напрямую вызывать на объекте события:

Метод Возвращаемое значение Описание
get_openid() str OpenID отправителя
get_msg_type() str Тип исходного сообщения WeChat
get_event() str Тип события (только для уведомлений о событиях)
get_content() str Содержимое сообщения в виде обычного текста
get_raw_xml() str Исходные данные в формате XML

Параметры конфигурации

Конфигурация нескольких аккаунтов

Каждый аккаунт соответствует одному публичному аккаунту:

[WechatMpAdapter.accounts.main]
appid = "wx1234567890abcdef"
appsecret = "your_app_secret_here"
token = "your_callback_token"
encoding_aes_key = ""                    # Требуется только для режима безопасности/совместимости (43 символа)
callback_path = "/mp/main"               # Путь обратного вызова
verified = true                          # Является ли аккаунтом с подтвержденной сертификацией (влияет на возможность отправки сообщений)
enable = true

[WechatMpAdapter.accounts.secondary]
appid = "wx0987654321fedcba"
appsecret = "another_app_secret"
token = "another_callback_token"
callback_path = "/mp/secondary"
enable = true

Описание полей конфигурации

Поле Обязательно Описание
appid Да AppID публичного аккаунта
appsecret Да AppSecret (secret) публичного аккаунта
token Нет Токен для проверки обратного вызова (рекомендуется использовать для включения проверки подписи)
encoding_aes_key Нет Ключ для шифрования и дешифрования сообщений (43 символа, требуется в режиме безопасности)
callback_path Нет Шаблон пути обратного вызова, по умолчанию /mp/{account}, где {account} заменяется именем аккаунта
verified Нет Является ли аккаунтом с подтвержденной сертификацией, по умолчанию true (см. ниже)
enable Нет Включена ли конфигурация, по умолчанию true

Подтвержденный сервисный аккаунт и пассивные ответы (verified)

Описание режимов шифрования

Мини-приложение WeChat предоставляет три режима шифрования и расшифровки сообщений:

Режим Описание encoding_aes_key Проверяемое поле
Режим в открытом виде XML передается в открытом виде Не требуется signature
Совместимый режим Существуют как открытые, так и зашифрованные сообщения Необязателен signature / msg_signature
Безопасный режим Все сообщения зашифрованы Обязателен msg_signature

Адаптер автоматически обрабатывает:

Callback-маршруты

Адаптер регистрирует два маршрута (GET и POST) для каждого включённого аккаунта:

Фактические пути доступа автоматически добавляют префикс модуля, например, путь регистрации /mp/main, фактические пути доступа будут /mp_{account}_verify/mp/main и /mp_{account}_message/mp/main.

API-ответ

Все вызовы call_api возвращают стандартизированный ответ: