&НаСервере
Процедура
ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
МассивПартнеров.ЗагрузитьЗначения(ЭтаФорма.Параметры.МассивСсылок);
КонецПроцедуры
Функция ПолучитьТокенTWIN()
Адрес = "iam.twin24.ai";
Соединение = Новый HTTPСоединение(Адрес,443,,, ,30, Новый ЗащищенноеСоединениеOpenSSL);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type",
"application/json");
Запрос = Новый HTTPЗапрос("/api/v1/auth/login",
Заголовки);
ТелоЗапроса
= "{
| ""email"":
""123…"",
| ""password"":
""123…"",
| ""ttl"":
""3600""
| }";
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8);
Результат = Соединение.ВызватьHTTPМетод("POST",
Запрос);
Сообщить("Токен: " + Результат.КодСостояния);
Если Результат.КодСостояния
= 200 Тогда
ЧтениеJSON
= Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Результат.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));
РезСтруктура
= ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Возврат
РезСтруктура.token;
Иначе
Возврат "";
КонецЕсли;
КонецФункции
Функция СоздатьЗаданиеНаОбзвонВTWIN(Знач
UuidСценария, Знач Токен)
Адрес = "cis.twin24.ai";
Соединение = Новый HTTPСоединение(Адрес,443,,,,30, Новый ЗащищенноеСоединениеOpenSSL);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type",
"application/json");
Заголовки.Вставить("Authorization", "Bearer " + Токен);
Запрос = Новый HTTPЗапрос("/api/v1/telephony/autoCall",
Заголовки);
ТелоЗапроса = "{
|
""name"": ""Автотестовое
задание"",
|
""defaultExec"":
""robot"",
|
""defaultExecData"":
""" + UuidСценария + """,
|
""secondExec"":
""end"",
|
""secondExecData"": null,
|
""cidType"": ""gornum"",
|
""cidData"":
""efc1dea2-3ce6-4567-b089-18aff013ff20"",
|
""startType"":
""manual"",
|
""startMoment"":
"""",
|
""cps"": ""1.01"",
|
""taskComment"": ""ТестовоеЗадание1"",
|
""webhookUrls"":[],
|
""additionalOptions"":
| {""fullListMethod"":""external"",
| ""fullListTime"":""0"",
| ""useTr"":null,
|
""allowCallTimeFrom"":""36000"",
|
""allowCallTimeTo"":""61200"",
| ""recordCall"":""true"",
| ""recTrimLeft"":""1"",
| ""detectRobot"":""true"",
| ""detectRobotMode"":""block"",
| ""detectRobotGreeting"":null,
| ""providerId"":null
| },
|
""redialStrategyOptions"":
| {""redialStrategyEn"":false,
| ""busy"":null,
| ""noAnswer"":null,
| ""answerMash"":null,
| ""congestion"":null,
| ""answerNoList"":null
| }
| }";
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8);
Результат = Соединение.ВызватьHTTPМетод("POST",
Запрос);
Результат2 = Результат.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
ЧтениеJSON
= Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Результат2);
РезСтруктура
= ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Сообщить("Создание задания:
" + Результат.КодСостояния);
Если Результат.КодСостояния
= 200 Тогда
Возврат РезСтруктура.id.identity;
Иначе
Возврат "";
КонецЕсли;
КонецФункции
Процедура
Пауза(Секунды) Экспорт
ВремяОкончания
= ТекущаяДата() + Секунды;
Пока ТекущаяДата()
<= ВремяОкончания Цикл
КонецЦикла;
КонецПроцедуры
Функция Заменить8на7вТелефонах(Знач М)//Заменяем первую [8] на [7] в номере телефона
Индекс = 0;
Для Каждого Эл из М Цикл
Если Сред(Эл, 1, 1) =
"8" Тогда
М[Индекс] =
"7" + Сред(Эл, 2, 10);
КонецЕсли;
Индекс = Индекс + 1;
КонецЦикла;
Возврат М;
КонецФункции
&НаСервере
Процедура
ДобавитьКандидатаВРегистр(Знач ИдЗадания, Знач МассивТелефонов, Знач СсылкаНаЛС)
Для Каждого Эл Из МассивТелефонов Цикл
МЗ = РегистрыСведений.TWIN_ГолосовойБот.СоздатьМенеджерЗаписи();
МЗ.Период
= ТекущаяДата();
МЗ.ИдентификаторЗадания
= ИдЗадания;
МЗ.ТелефонИзЛС = Эл;
МЗ.ЛС = СсылкаНаЛС;
Если ЗначениеЗаполнено(МЗ.ИдентификаторЗадания)
И
ЗначениеЗаполнено(МЗ.ТелефонИзЛС)
Тогда
МЗ.Записать(Истина);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция СписокКандидатовВJSON(autoCallId)
Запрос = Новый Запрос;
Запрос.Текст
=
"ВЫБРАТЬ
| Партнеры.Ссылка
КАК СсылкаНаЛС,
| Партнеры.УК_ФизЛицо.Имя
КАК Имя,
| Партнеры.F1_ТелефонСтрока КАК
Телефоны
|ИЗ
| Справочник.Партнеры
КАК Партнеры
|ГДЕ
| Партнеры.Ссылка
В (&МассивПартнеров)";
Запрос.УстановитьПараметр("МассивПартнеров", ЭтаФорма.МассивПартнеров);
Результат = Запрос.Выполнить();
Выгрузка = Результат.Выгрузить();
batch =
Новый Массив();
Для Каждого Эл из Выгрузка Цикл
variables
= Новый Структура();
variables.Вставить("name", Эл.Имя);
variables.Вставить("age", "22");
Если СтрНайти(Эл.Телефоны, ";") <> 0 Тогда
phone
= СтрРазделить(Эл.Телефоны,
";");
Иначе
phone
= Новый Массив();
phone.Добавить(Эл.Телефоны);
КонецЕсли;
phone =
Заменить8на7вТелефонах(phone);
с1 = Новый Структура();
с1.Вставить("id_debt", "");
с1.Вставить("id_num", "");
callbackData
= Новый Массив();
callbackData.Добавить(с1);
Кандидат = Новый Структура();
Кандидат.Вставить("phone", phone);
Кандидат.Вставить("variables", variables);
Кандидат.Вставить("callbackData", callbackData);
Кандидат.Вставить("autoCallId", autoCallId);
batch.Добавить(Кандидат);
ДобавитьКандидатаВРегистр(autoCallId, phone, Эл.СсылкаНаЛС);
КонецЦикла;
Данные = Новый Структура();
Данные.Вставить("batch", batch);
ЗаписьJSON
= Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
Возврат ЗаписьJSON.Закрыть();
КонецФункции
&НаСервере
Функция ДобавитьКандитатовНаОбзвонВTWIN(Знач Токен, Знач autoCallId)
Адрес =
"cis.twin24.ai";
Соединение = Новый HTTPСоединение(Адрес,443,,,,30, Новый ЗащищенноеСоединениеOpenSSL);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type",
"application/json");
Заголовки.Вставить("Authorization", "Bearer " + Токен);
Запрос = Новый HTTPЗапрос("/api/v1/telephony/autoCallCandidate/batch",
Заголовки);
ТелоЗапроса = СписокКандидатовВJSON(autoCallId);
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8);
Результат = Соединение.ВызватьHTTPМетод("POST",
Запрос);
Результат2 = Результат.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
Сообщить("Добавление
кандидатов на обзвон: " + Результат.КодСостояния);
Если Результат.КодСостояния
= 200 Тогда
//При успешном
выполнении метода придет ответ с кодом 200 без тела
Возврат Результат.КодСостояния;
Иначе
Возврат "";
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура
СоздатьЗадание(Команда)
//СоздатьЗаданиеНаСервере();
UuidСценария = "1dbac234-567f-8c9c-9a01-21247934d602";//2023-11-13
Токен = ПолучитьТокенTWIN();
autoCallId
= СоздатьЗаданиеНаОбзвонВTWIN(UuidСценария, Токен);
Пауза(5);//Требование на сайте
TWIN
ДобавитьКандитатовНаОбзвонВTWIN(Токен,
autoCallId);
КонецПроцедуры
|