Подключение Telegram для проекта на JAICF
Чтобы подключить Telegram для проекта на JAICF:
Подготовка проекта
Перед подключением канала предварительно подготовьте проект JAICF:
- Укажите в файле
build.gradle.kts
в зависимостях настройки:
dependencies {
// ...
implementation("com.just-ai.jaicf:jaicp:$jaicfVersion")
implementation("com.just-ai.jaicf:telegram:$jaicfVersion")
}
$jaicfVersion
последней версией фреймворка.- Сконфигурируйте в зависимости от способа подключения к платформе:
long polling
— бот будет сам подключаться к серверу Just AI при взаимодействии с платформой. Простое решение, подходит для локальной разработки и отладки.Для этого способа укажите в файле
JaicpPoller.kt
каналTelegramChannel
:
package com.just-ai.jaicf.template.connections
fun main() {
JaicpPollingConnector(
templateBot,
accessToken,
channels = listOf(
ChatApiChannel,
ChatWidgetChannel,
TelephonyChannel,
TelegramChannel
)
).runBlocking()
}
webhook
— по указанной ссылке бот будет принимать сообщения платформы. Необходимо конфигурировать для подключения в JAICP Cloud.Для этого способа укажите в файле
JaicpServer.kt
каналTelegramChannel
:
package com.just-ai.jaicf.template.connections
fun main() {
JaicpServer(
botApi = templateBot,
accessToken = accessToken,
channels = listOf(
ChatApiChannel,
ChatWidgetChannel,
TelephonyChannel,
TelegramChannel
)
).start(wait = true)
}
Подключение канала
Для подключения канала используйте инструкцию.
Тестирование бота
Перейдите в окно диалога с ботом в Telegram и отправьте ему приветственную/активационную фразу, предусмотренную вашим сценарием. После этого должен начаться ваш диалог с ботом.
Нативные возможности канала
Использование данных из запроса
В канале Telegram можно получить из запроса дополнительные данные. Для этого приведите тип запроса в блоке action
к TelegramBotRequest
:
action {
val telegramRequest = request.telegram
}
Также TelegramBotRequest
можно привести к конкретному типу: например, к TelegramLocationRequest
, чтобы получить широту и долготу:
action {
val locationRequest = request.telegram?.location ?: return@action
val (longitude, latitude) = locationRequest.location
}
Нативные реакции
JAICF предоставляет универсальные реакции, доступные во всех каналах, а также реакции, уникальные для Telegram.
Чтобы использовать специфические реакции Telegram, используйте reactions.telegram
, например:
action {
reactions.say("Привет!")
reactions.telegram?.sendContact("+79001234567", "Alex")
}
Для доступа к API-клиенту Telegram используйте reactions.telegram.api
:
action {
reactions.telegram?.api?.getMe()
}