Имя: Пароль:
1C
 
1C + OkTell HTTP API
0 DosBot
 
11.07.18
06:24
Добрый день.
Имеется:
1) Сервер OkTell'а с включенным встроенным web-сервером (http://wiki.oktell.ru/Серверный_HTTP_интерфейс).
2) Адноэска: Медицина. Больница, редакция 1.4 (1.4.2.1).
Платформа 8.3.9.2170

Хочу по ссылке выше выполнить тривиальную вещь: позвонить некому абоненту из 1С через ОкТелл.

Для этого выполняю код:
...
    HTTPСоединение = Новый HTTPСоединение(ДанныеПодключения.Адрес, ДанныеПодключения.Порт,,,,10);
    ЗапросПозвонить = "http://ИмяПользователя:Пароль@192.168.XX.XX:4055/execsvcscript?name=SvcScript1&startparam1=221&startparam2=НОМЕРТЕЛЕФОНА&async=0&timeout=10";;
    HTTPЗапрос = Новый HTTPЗапрос(ЗапросПозвонитьСкрипт);
    Результат =  HTTPСоединение.Получить(HTTPЗапрос);
...

В итоге всё, что я получаю - это код ошибки 404.

Сначала грешил на криво написанный скрипт на самом сервер OkTell. Но самая простая команда из той же вики октелла:
http://ИмяПользователя:Пароль@192.168.XX.XX:4055/getversion
даёт тот же результат
Дальнейшая медитация в вики октелла на эту тему ясности не добавила.
В OkTell у пользователя, по данным которого отправляю запрос стоит настройка "Возможность исполнять методы Web-Api" = истина.

ЧЯДНТ?
1 DosBot
 
11.07.18
06:25
Очапятка:
ЗапросПозвонитьСкрипт => ЗапросПозвонить
2 DosBot
 
11.07.18
07:52
Кто-нибудь вообще развлекался с "Http-API" Oktell? :(
3 Остап Сулейманович
 
11.07.18
08:30
(0) С этим адресом : 192.168.XX.XX все в порядке?
Это замылено для форума или так реально в коде забито?
4 DosBot
 
11.07.18
08:38
(3) замылино специально. В коде все норм (о чём говорит наличие ответа от сервера)
5 Остап Сулейманович
 
11.07.18
08:42
(4) Какой смысл мылить адрес из внутренней подсети?
6 DosBot
 
11.07.18
09:10
(5) да никакого - просто писал адрес по памяти, не на рабочем месте (не вспомнил последние цифры)
7 DosBot
 
11.07.18
10:07
апну
8 DosBot
 
09.10.18
12:43
В общем, разобрался в чем беда. Оказывается в настройках пользователей ОкТелла небыло присвоено роли "Пользователь".

Теперь медитирую вот над чем:
Как "слепить простенький Софтфон" или "взять бесплатный готовый, работающий с софтовой АТСкой".

...
Вот есть статья по настройке софтфона в ОкТелле:
http://wiki.oktell.ru/Подключение_IP_телефонов_и_софтфонов

Опять же, есть функция веб-интерфейса ОкТелла wp_autocallstart
(http://wiki.oktell.ru/Серверный_HTTP_интерфейс).

Теперь, как связать одно с другим? Как получить список свободных линий, выполнить звонок (изменив статус линии и тп)?
Где можно увидеть пример и порядок взаимодействия софтфона с сервером ОкТелла? Что, ему, серверу ОкТелла надо, чтобы выполнить звонок через wp_autocallstart?
9 DosBot
 
09.10.18
12:48
Собственно, код который организует сейчас телефонный звонок:

...
    HTTPСоединение = Новый HTTPСоединение(ДанныеПодключения.Адрес, ДанныеПодключения.Порт, Логин, Пароль,,10);
    ЗапросПозвонитьСкрипт = "/execsvcscript?name=SvcScript1&startparam1="+ВнутреннийНомер+"&startparam2="+НомерТелефона+"&async=0&timeout=10";
    HTTPЗапрос = Новый HTTPЗапрос(ЗапросПозвонитьСкрипт);

    Результат =  HTTPСоединение.Получить(HTTPЗапрос);
...

При этом должно быть запущено (!) стороннее приложение ОкТелл клиента т.к. скрипт выполняется методами этого приложения... поэтому хочу собственно то что в (8) чтобы без всяких ОкТелл клиентов...
10 palsergeich
 
09.10.18
13:20
Нц начнем с того что 404 - страница не найдена, стандартный HTTP ответ если что то не так с адресом
11 palsergeich
 
09.10.18
13:24
Я бы сделал так
    HTTPСоединение = Новый HTTPСоединение(ДанныеПодключения.Адрес, ДанныеПодключения.Порт,,,,10);
    HTTPСоединение.Пользователь = ИмяПользователя;
    HTTPСоединение.Пароль = Пароль;
    HTTPСоединение.Порт = 4055;
    ЗапросПозвонить = "execsvcscript?name=SvcScript1&startparam1=221&startparam2=НОМЕРТЕЛЕФОНА&async=0&timeout=10";;

    HTTPЗапрос = Новый HTTPЗапрос(ЗапросПозвонитьСкрипт);

    Результат =  HTTPСоединение.Получить(HTTPЗапрос);
12 palsergeich
 
09.10.18
13:27
ТОчнее Вот Так
    
Я бы сделал так
    HTTPСоединение = Новый HTTPСоединение(192.168.XX.XX, 4055,,,,10);
    HTTPСоединение.Пользователь = ИмяПользователя;
    HTTPСоединение.Пароль = Пароль;
    ЗапросПозвонить = "execsvcscript?name=SvcScript1&startparam1=221&startparam2=НОМЕРТЕЛЕФОНА&async=0&timeout=10";;

    HTTPЗапрос = Новый HTTPЗапрос(ЗапросПозвонитьСкрипт);

    Результат =  HTTPСоединение.Получить(HTTPЗапрос);
13 palsergeich
 
09.10.18
13:28
Просто код в (0) безсмысленен - вы логинетесь на одном сервере и пытаетесь передать невалдный запрос в него
14 DosBot
 
09.10.18
13:38
(13) Да. То что правильно и работает в итоге в (9)
15 DosBot
 
09.10.18
13:41
Вопрос в вот в чём: как сделать исходящий вызов через функцию wp_autocallstart.
Только что проверил: она работает, но только когда включено приложение Oktell client.. :(
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший