всем привет Меня зовут Гулин Антон Я разработчик сам себе руководитель сам себе бухгалтер и всё остальное Значит сегодня расскажу как подключить нашего голосового бота а работающего на технологии Open Real Time от ну от Openai соответственно это когда Speech to Speech то есть без конвертации звука в текст и текста в звук А прямое взаимодействие как его подключить к платформе DIFY.AI конкретно к рабочим процессам и для чего это нужно То есть для чего это нужно сначала пару слов потом буду показывать на уже на примере конструктора и непосредственно в процессе подключения для чего это нужно То есть когда у вас э бот предполагается что бот у вас обрабатывает некие запросы от пользователей и это не всегда плоские плоская консультация которую можно было задать раньше у нас на сайте gulin.kz просто в виде текстовой инструкции которая понимает ну интерпретирует уже сам llm и формирует из него уже голосовое какое-то сообщение А скорее всего у всех предполагается наличие какой-то логики То есть не просто проконсультировать и ответить на какие-то вопросы но допустим сделать запрос в базу проверить статус какого-то заказа проверить информацию о клиенте сделать новый заказ и прочие какие-то функции которые ну предполагается выполняет обычный человек которого э мы все хотим заменить ботом да ну в силу разных причин да бот быстрее бот ээ без эмоций бот ээ не устаёт бот не ходит на обед и так далее да ну и заменить какую-то рутину Опять же я не призываю менять людей на роботов Я вот лично мне роботы полезны тем что мне удобнее работать с ними да чем с людьми Таких людей тоже я знаю много Поэтому когда у вас есть потребность не вонзить а вонзить а внедрить бота неважно текстового или голосового в какую-то процесс то вам понадобится задать ему логику то есть скрипт какой-то да вот у вас если есть продажники есть такое понятие в продажах это как скрипты продаж да это по факту вы программируете своего сотрудника на то чтобы он следовал там каким-то этапам шагам и привёл ли к какому-то результату да это либо да либо нет ну либо ещё какая-то там у вас личная функциональность Вот Значит теперь показываю значит что есть и для того чтобы эту логику реализовать есть два ну есть пути да есть пути какие это программирование непосредственно То есть вы нанимаете программиста который вам пишет логику вот эту программную для бота который следует уже где-то там в мозгах компьютера А но для этого нужен человек опять же который будет писать программу И есть сейчас достаточно много разных конструкторов но код так называемый да визуальное программирование или блочное программирование которые позволяют реализовать вот ну ту же самую программную логику но может быть чуть проще а без необходимости допустим знания синтаксиса какого-то языка программирования А просто понимая как вам это сделать вы можете чисто блоками выложить какую-то логику для бота И вот сейчас мы будем показывать как это сделать и продемонстрирую значит как это работает Значит сейчас я переключаю экран на конструктор фи где сейчас залит уже мной шаблон обрабатывающие две функции которые мы сейчас тоже рассмотрим И вот мы будем смотреть как это вообще будет работать Поехали Так сейчас Итак значит вот у нас рабочая область dify.ai это студия так называемая где мы блоками выкладываем э логику работы этого workflow этого рабочего процесса а который на старте получает от нас какие-то данные каким-то образом их проверяет ээ валидирует и так далее И потом уже выдаёт результат в ответ Этот самый ответ мы передаём нашему голосовому боту и бот уже дальше делает работу Значит начнём с чего начнём с того что нам надо подключить э рабочий процесс workflow к нашему сайту gulin.kz в разделе сервис Первое э уже у меня шаблон здесь залит У вас он будет
доступен по ссылке в описании к ролику и на сайте на моём Значит первое что нам надо создать - это рабочий процесс по ссылке Значит вы когда скопируете ссылочку вставите её вот в это поле Import from DSL и у вас получится вот такой вот рабочий процесс называется workflow Если вы захотите создавать их вручную значит переходите Create from blank и выбираете вот этот вот тип э процесса workflow называемый Другой у нас не работает ээ с голосовыми ботами только workflow Итак значит вот вы экспортировали этот workflow Дальше настроек никаких здесь нету но пройдёмся по шагам по по всем этапам Значит на входе у нас значит у диффи есть такое понятие как аэ у рабочих процессов вот на платформе DIFy.AI есть понятие input field то есть вводные поля скажем так Вы можете задать эти поля к в настройках этого процесса То есть поля - это некие элементы ну поля именно с названиями определёнными которые рабочий процесс ждёт от ну скажем так от входящего запроса Входящий запрос может быть у нас как по api созданной так и допустим в чате да или вот стартануть можно процесс прямо вот здесь для теста Мы тестами заниматься сейчас не будем именно в самом э в конструкторе да а просто посмотрим как это работает вообще в принципе Дальше эти самые поля могут быть как обязательными Вот допустим название функции я хочу чтобы бот передавал мне м обязательно да и э название и другие поля это не обязательно это у нас для эксперимента Значит дальше у нас идёт блок if else то есть если то а если название функции у нас get time это самая первая у нас будет функция простейшая то значит мы идём по пути вот этому Мы получаем время Здесь у нас не участвует в этом процессе llm то есть GPT никакой просто это некая программа А и мы получаем допустим время в некотором часовом поясе Ну здесь допустим у нас стоит Лондон Текущее время Лондона И вот это текущее время у нас будет на выходе И вторая у нас второй вариа второй вариант функции - это two numbers Это когда мы использовать будем эту функцию предполагается что мы хотим назвать боту два числа а голосовому тому самому с которым мы будем сейчас разговаривать да к которому мы подключим вот эту вот ээ вот эту рабочий вот этот рабочий процесс А здесь мы будем уже непосредственно как это сказать выводить какой-то результат Ну допустим вот здесь сейчас дана инструкция Умножь эти два числа Умножь эти два числа Всё И у нас результат будет умножение То есть он текстом нам выдаст в того голосового бота который у нас ээ будет разговаривать с нами и тот нам это всё э озвучит И третий вариант то есть если это в принципе он мы его рассматривать не будем это если у нас просто функция не совпадает нам вернётся обычный ответ Типа такой функции нету в логике вот этого рабочего процесса Вот Значит сначала будем подключать рабочий процесс к боту который у нас предварительно уже был создан Вот они у меня есть уже подключены к серверу Это всё были в других видео Значит ээ вот функция у нас уже подключены Сейчас мы будем по одной функции подключать и я покажу дополнительно что это за функция и как она как она будет работать Первое значит подключаем workflow к а боту и к нашей площадке Сначала к нашей площадке а потом к боту После того как вы импортировали шаблон в платформу dify.ai вам нужно сделать ээ публикацию этого процесса Нажимаем кнопку опубликовать Всё процесс у нас опубликован Далее нам надо получить api-ключик Это делается в разделе api И параллельно переходим здесь на моём сайте в раздел сервисы голосовые боты функции Ой стоп стоп стоп стоп Зазвезделся Э- так сервисы вот текстовые боты пардон Значит и добавить бота Значит у нас два бота есть Чатфлоу - это для работы с чатами и с этими мессенджерами скажем так в чатах И workflow - это вот этот для э обработки работы с голосовым ботом Значит мы проверяем ключ адрес сервера у нас должен быть совпадать здесь Если зде если у вас будет dify установлен на вашем собственном сервере здесь поменяете адрес на свой и ключик получаем Копируем и вставляем в это поле Нажимаем сохранить Вот у нас создался workflow привязанный к вот этому процессу именно здесь на платформе dify.kz Далее переходим уже непосредственно в голосовые боты Выбираем нашего
бота которого мы хотим привязать к dify.kz И вот здесь в выпадающем списке привя привязка к dify.kz выбираем нужного нам бота и нажимаем кнопку сохранить Всё бот привязан Что это значит теперь бот будет обрабатывать то есть при при наличии у голосового бота функций которые аэ он может обработать вернее не может а должен обработать где-то на стороне То есть эти этой стороной будет вот этот самый сервер dify.kz ваш или наш неважно да теперь я показываю значит как выглядит описание функции И мы начнём допустим там с какой-нибудь первой вот самой простой и дальше будем смотреть уже там посложнее Значит вот у нас две функции описания точнее да первая простая - это та самая первая ветка в в шаблоне get time То есть здесь нет никаких параметров ничего нет кроме названия функции и инструкции для голосового бота когда её вызывать то есть для чего она нужна То есть теперь я когда позвоню боту скажу ему что я хочу узнать текущее время он вызовет это эту функцию а эта функция уже в свою очередь дёргает ээ workflow рабочий процесс и выдаёт нам сервер уже результат Соответственно мы сейчас попробуем а поменять время в режиме скажем так вот разговора да и у нас получится как бы какой-то результат совершенно разный Значит это у нас описание в формате JSON Оно нужно именно для бота Значит как у нас создаётся функция непосредственно на сайте Значит мы генерируем где-то вот этот вот само описание Далее мы переходим уже в раздел функции И у нас вот здесь уже они готовые есть но я вам это покажу как оно в принципе Вы можете создать новую функцию Вот пожалуйста Да у нас уже она здесь зашита Это как пример То есть мы просто сюда вот этот jйсончик описание программное копируем и у нас получается функция а которую мы должны потом привязать к боту голосовому Значит вот у нас первая функция get time да а всё вот мы сюда вставили и переходим значит голосовые боты Опять наш бот И берём функцию get time Нажимаем сохранить Значит теперь у бота есть функция get time которая обрабатывается у нас вот здесь И первое время которое у нас получится от бота получить это будет время Лондона Так значит теперь мы переключаемся на А сейчас будет у нас небольшое тут окошко с телефончиком программным где я набираю номер бота у меня на сервере Привет я бот То Чем могу помочь привет я хочу узнать время Если у вас есть какие-либо вопросы или нужна помощь пожалуйста дайте знать А я хочу узнать время текущее К текущее время 20250507 9251 То есть у нас разница с Лондоном несколько часов соответственно сейчас время немножко другое Допустим я сейчас меняю на UTC Понял вас Извините за недоразумение Ничего пожалуйста уточните в каком городе и часовом поясе если потребуется дополнительная помощь или информация пожалуйста дайте знать А я хочу узнать текущее время Сейчас 20250507082550 Спасибо Заверши звонок Итак значит в процессе у нас получилось что мы поменяли а боту скажем так логику обработки ну не боту а в рабочем процессе процессе мы поменяли а часовой пояс и бот нам выдал другой результат Ну вот сейчас мы посмотрим в логах Вот у нас было два запроса Первый запрос у нас 925 Время он выдал Второй запрос он выдал 825 то есть на час меньше И вот у нас есть трейс который как бы показывает что у нас было да вот у нас вызвалась функция get time Поля number о number 2 у нас пустые то есть мы их не передавали и такой функции у нас не было И вот они прошли обработку вот в этом в первой цепочке Теперь у нас чуть посложнее будет задача Ну в плане не в плане реализации да потому что в данный момент мы рассматриваем шаблон а может быть как бы просто более функциональная штука да то есть когда мы передаём уже в бота параметры и этот бот уже уже вот этот программный скажем так чатбот или как workflow процесс он уже обрабатывает эту информацию и выдаёт нам результат А тот бот с которым мы общаемся озвучивает нам полученный из функции который мы сейчас будем привязывать к нему а полученный результат Значит программно это ну скажем так в Jсоне эта функция выглядит следующим образом Вот это у нас вторая функция Вот она Значит называется она two numbers также Functions И вот здесь у нас появились уже параметры да то есть ээ параметры они оба обязательные И первое число и второе число с типом number типом number то есть и инструкция для бота А то есть если пользователь хочет назвать два числа запроси у него эти два числа То есть сейчас он это будет у нас делать Значит также то же самое у нас получается Мы копируем а-а эти данные как бы к себе на к нам на сервер Ну и вот они у меня уже эти функции есть Вот она записана Теперь мы переходим уже непосредственно в бота и привязываем эту функцию Да Вот мы сейчас одну выключим можем две включить Чтобы две функции выбрать нужно зажать клавишу Ctrl и выбрать накликать те которые нужны И вот у нас two Numbers и Get Time Мы можем сейчас параллельно их использовать То есть усложняем немножко задачу боту и как бы смотрим на результаты О'кей мы привязали боту вторую функцию и сейчас будем с ним разговаривать уже по вот этой теме по теме двух чисел Итак значит нам надо сейчас включить телефончик Я звоню боту Привет Я бот тот чем могу помочь Привет Я хочу назвать два числа Конечно назовите пожалуйста два числа А пть и восемь 5 x 8 = 40 Спасибо до свидания Значит что у нас сейчас произошло да он вот мы смотрим в логе у нас здесь будет уже третий запрос Вот он Вот 5 умножить да и вот треacing мы смотрим Стартанула у нас функция two_numers 5 и8 передал сюда голосовой бот И он уже вернул этот результат Лэмка у нас получила задание умножь эти числа 5 на8 И он нам выдал результат в виде сорока Теперь мы меняем не трогая вот здесь ничего на сайте и в голосовом боте мы просто меняем логику обработки вот этих чисел допустим да Умножь эти два числа и и результат аре результат умножь на 100 То есть тот голосовой бот с которым мы разговариваем он про это ничего не знает Он просто принимает 2 числа а уже вот этот наш рабочий процесс он уже решает задачку скажем так званием Привет я бот тот Чем могу помочь а привет Я хочу назвать два числа Конечно пожалуйста предоставьте числа которые нужно умножить А 10 и 50 10 x 50 = 500 Если умножить 500 на 100 получится 50.000 Спасибо А сейчас что произошло э если вы заметили бот наш голосовой каким-то образом узнал что числа числа будут умножаться У него был значит он сделал запрос То есть у нас значит инструкция Вот видите у нас появилось два запроса То есть он первый сделал запрос но не передал сюда числа Вот смотрите первый запрос Two numbers и без чисел То есть наша инструкция в функции numbers видимо не совсем корректная не совсем понятная скажем так да и без проверки Поэтому э сначала прилетел сюда запрос ЛМК местная на здесь на dify.kz точнее она проверила что чисел-то нету и типа отвечает нам:
"А ты нам числа-то дай" Вот она второй раз как бы этот ответ уже транслируется нам А второй запрос уже который уточняющий скажем так вот пожалуйста да треacing этого numbers 10 и 50 пожалуйста Вот теперь мы можем допустим проверить работу двух функций одновременно То есть мы опять ничего не делаем на стороне голосового бота а просто звоним ему и спрашиваем допустим время Привет я бот тот Чем могу помочь а скажи пожалуйста какие функции у тебя есть в данный момент я могу выполнять несколько функций Один Определение текущего времени Два взаимодействие с двумя числами например сложение или умножение двух чисел Третье- прерывание текущего звонка завершением разговора Четвёртое- перевод звонка на живого оператора Если нужно что-то из этого дайте знать Ээ всё спасибо Да я хочу узнать время текущее Текущее время 2025 733 минутных Пожалуйста время Да спасибо Заверши звонок пожалуйста Значит вот те две функции которые он назвал перевод на оператора и завершение звонка это у него зашито скажем так в мозгах Их невозможно здесь пока у нас настроить Ну то есть не то что невозможно я их убрал Вот На этом пока всё То есть э-э точка входа точка соединения между голосовым ботом и ботом ботом рабочим процессом между dify.kz как бы есть Соответственно логика обработки может быть уже расширена значительно поэтому обращайтесь У нас всё есть всё есть Всё до свидания
2025-05-14 01:03