Введение. 4 года назад я уже писал похожую статью
Насколько все проще стало сейчас в 2022! Достаточно сказать, что дольше всего в прошлый раз я потратил времени на oScript обертку которая принимала запросы от Яндекс.Диалогов и разворачивание сервера под нее. Теперь я всё сделал за 1 день!
Яндекс.Диалоги
Для того, чтобы команду можно было активировать голосом, нужно для нее создать навык на платформе Яндекс.Диалоги.
Ну начнем с того, что сделаем диалог. Дадим ему имя и установим переключатель Backend в раздел "функция в яндекс.облаке". Саму функцию напишем чуть позже.
Далее обязательно заполнить какой фразой будет запускаться ваш диалог. Если использовать его будете только вы, можно сделать его Приватным. Опубликовать и использовать у себя на смартфоне в приложении Яндекса, если вы там авторизованы.
Заполним небольшое описание, если вы все-таки будете создавать публичный навык.
И конечно выберем симпатичную иконку Доброго Робота.
И конечно выберем симпатичную иконку Доброго Робота.
Яндекс.Облако
Теперь сделаем облачную функцию-прослойку на C#. Она будет принимать команды от Яндекса и делать запросы к 1С базе.
Для этого идём в Яндекс.Облако, регистрируемся и заводим Биллинг. Без рабочего биллинга у вас ничего не получится, но волноваться не надо - функции для Яндекс.Диалогов бесплатны
Итак изучаем меню Яндекс.Облака. М, сколько всего вкусного! Но нам пока нужна только одна вещь - "Cloud Functions", выбираем её.
Ой, сюрприз! Никакого oScript и тем более языка 1С тут нет. Говорила мне мама кушать много каши и учить Питон, но я не слушал!
Будем писать на .net core! Вполне мощный инструмент для наших задач.
Теперь скачиваем приложенный к статье файл, заходим в редактор и копируем его туда!
Самая сложная часть - в том месте кода, где есть комментарий "//web request to 1C base" написать свой запрос к HTTP интерфейсу вашей базы 1С. Рекомендую тут для отладки запросов использовать Postman и изучить статьи раз и два
То что написал я приведено ниже:
Код обработки запроса:
string originalU = request.Request.OriginalUtterance;
if (originalU == "команда001")
{
reqC = reqC + " можно обработать команду как-то ";
}
else if (originalU.ToLower().Contains("продажи базы"))
{
//web request to 1C base
var client = new HttpClient();
var requestH = new HttpRequestMessage();
requestH.Method = HttpMethod.Post;
requestH.RequestUri = new Uri(@"https://your1Cip.ru/httpmethod");
//requestH.Headers.Accept
var responseH = client.Send(requestH);
string resStr = responseH.Content.ReadAsStringAsync().Result;
AliceResponse al = new AliceResponse();
al.Response.Text = resStr;
}
Проверяем. IT WORKS! IT WORKS!
Как сделать торчащий публично наружу из 1С HTTP сервис, который будет принимать HTTP запросы от Яндекс.Диалогов и возвращать продажи?
Эту задачу я оставлю вам на самостоятельное изучение. Порекомендую почитать статьи раз и два и три
Послесловие
если до прочтения этой статьи вы еще не слышали про Postman, Яндекс Облако, или даже про REST HTTP сервисы, у меня для вас плохие новости...пора учиться как 1С интегрируется и общается с другими системами!