Boa tarde
Existem muitos artigos sobre o tema dos robôs de telegrama, mas poucos escrevem sobre habilidades para Alice, e eu não encontrei nenhuma informação sobre como criar um único bot, então decidi compartilhar minha experiência sobre como criar um bot de telegrama simples e o Yandex. tendo um único funcional.
Portanto, não vou lhe dizer como criar um servidor Web e obter um certificado SSL, já foi escrito o suficiente.
Criando um bot de Telegram
Primeiro, crie um bot do Telegram, para isso, vá ao Telegram e encontre o bot do BotFather lá.


Escolha / newbot

Nós inserimos o nome do bot pelo qual ele responderá, depois o nome do bot; em resposta, obtemos um token para controlar o bot, escrevemos essa chave, será útil para nós no futuro.

O próximo passo é informar aos servidores do Telegram para qual servidor enviar os dados do bot. Para fazer isso, faça um link do formulário:
https: //api.telegram.org/bot______/setWebhook?url=https://_________
___ TOKEN ___ substitua por nosso token de bot recebido anteriormente
____ PATH_DO_SCRIPT ___ é substituído pelo endereço do script em nosso servidor onde os dados serão processados (por exemplo,
www.my_server.ru/webhook_telegram.php ).
Há um problema, o servidor api.telegram.org está bloqueado, mas você pode fazer isso: alugue o servidor mais barato, onde não há restrições, e dê o comando no console deste servidor
wget _______
É isso, o bot do Telegram é criado e conectado ao seu servidor.
Criando uma habilidade para Yandex.Alice
Vamos continuar a criar a habilidade para o Yandex.Alice.
Para criar uma habilidade, você precisa acessar a página de desenvolvedores do Yandex.Dialogs, a
página de desenvolvedores do Yandex.Dialogs, clique em "Criar caixa de diálogo" e selecione "Habilidade em Alice".

A caixa de diálogo de configurações de habilidades é aberta.

Começamos a inserir as configurações de habilidade.
Digite o nome da sua habilidade.

O nome da ativação deve ser selecionado com muito cuidado para que Alice o entenda corretamente, a partir das nuances - um aplicativo móvel com Alice e colunas como Yandex.Station ou Irbis A pode perceber as palavras de maneiras diferentes.
Nós inserimos o caminho para o script em nosso servidor da mesma maneira que para o Telegram, mas será um script especificamente para Alice, por exemplo,
www.my_server.ru/webhook_alice.php .

Nós escolhemos a voz que a habilidade falará, eu prefiro a voz de Alice.

Se você planeja trabalhar apenas em dispositivos móveis ou em um navegador, selecione "Precisa de um dispositivo com uma tela".
Em seguida, insira as configurações do catálogo de habilidades de Alice. Se você planeja usar a palavra marca para ativação, precisa passar pela verificação do site da marca no serviço webmaster.yandex.ru.

Com as configurações, vá para os scripts.
Script de bot de telegrama
Vamos começar com o script do Telegram.
Nós conectamos a biblioteca onde as mensagens do bot e Alice serão processadas:
include_once 'webhook_parse.php';
Definimos o token do nosso bot:
$tg_bot_token = "_____YOUR_BOT_TOKEN_____";
Nós obtemos os dados:
$request = file_get_contents('php://input'); $request = json_decode($request, TRUE);
Analisamos os dados em variáveis:
if (!$request) { die();
Agora você pode trabalhar com variáveis:
$ tokens - agora todas as palavras que o usuário digitou aqui
$ user_id - aqui está o ID do usuário
$ msg_chat_id - bate-papo no qual o bot recebeu um comando
$ msg_user_name - nome de usuário
Em seguida, chamamos a função Parse_Tokens para processamento:
$Out_Str = Parse_Tokens($tokens);
E enviamos a resposta:
Send_Out($user_id, $Out_Str);
a função Send_Out é simples e tem a seguinte aparência:
function Send_Out($user_id, $text, $is_end = true) { global $tg_bot_token; if (strlen($user_id) < 1 || strlen($text) < 1) {return;} $json = file_get_contents('https://api.telegram.org/bot' . $tg_bot_token . '/sendMessage?chat_id=' . $user_id . '&text=' . $text); }
Script de habilidade para Yandex.Alice
Agora, vamos ao roteiro de Alice, é quase o mesmo que para o Telegram.
Também conectamos a biblioteca onde as mensagens do bot e Alice serão processadas, além de uma biblioteca com classes para Alice:
include_once 'classes_alice.php'; include_once 'webhook_parse.php';
Nós obtemos os dados:
$data = json_decode(trim(file_get_contents('php://input')), true);
Analisamos os dados em variáveis:
if (isset($data['request'])) {
Aqui as variáveis necessárias são um pouco menos:
$ tokens - agora todas as palavras que o usuário digitou aqui
$ user_id - aqui está o ID do usuário
O Yandex constantemente aperta as habilidades publicadas, e eu adicionei uma linha para sair imediatamente do script sem iniciar o processamento completo da mensagem:
if (strpos($tokens[0], "ping") > -1) {Send_Out("pong", "", true);}
Chamamos a função Parse_Tokens para processamento, é a mesma que para o Telegram:
$Out_Str = Parse_Tokens($tokens);
E enviamos a resposta:
Send_Out($user_id, $Out_Str);
A função Send_Out é mais complicada aqui:
function Send_Out($user_id, $out_text, $out_tts = "", $is_end = false) { global $data_msg_sess_id, $user_id;
Terminou o roteiro de Alice.
O script de processamento Parse_Tokens em si foi feito exclusivamente por exemplo, você pode fazer verificações e processamento lá.
function Parse_Tokens($tokens) { $out = "";
Se você precisar se comunicar com um usuário de uma forma mais complexa do que uma pergunta e resposta, precisará salvar no banco de dados (por exemplo, mysql) $ user_id do usuário e os dados já recebidos do usuário e analisá-los na função Parse_Tokens.
Na verdade, isso é quase tudo, se tudo for feito corretamente, o bot do Telegram já estará disponível. A habilidade de Alice pode ser verificada em
dialogs.yandex.ru/developer , acessando sua nova habilidade na guia de testes.

Se tudo funcionar corretamente, você pode enviar a habilidade para moderação, clicando no botão "Moderação".
Agora você tem dois bots para plataformas diferentes que funcionam da mesma maneira.
Documentação do serviço Yandex.Dialog
aquiOs scripts completos são publicados no
download do github.
Update: agrupou tudo nas classes e atualizou o repositório no github