Инструменты пользователя

Инструменты сайта


pushxmlfanvil

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

pushxmlfanvil [2021/04/27 04:10] (текущий)
sector создано
Строка 1: Строка 1:
 +====== Регистрация пользователя на IP телефоне Fanvil при смене пользователя в 1С ======
 +
 +Осторожно ! ГОВНОКОД =)
 +
 +php  скрипт который ловит запрос от 1с и отправляет рег. данные на телефон:
 +
 +<code | ini>
 +
 +<?php
 +#
 +$tel=($_GET["TelephoneNumber"]);
 +$password=($_GET["email"]);
 +$ipTel=($_GET["IpTelephone"]);
 +$regEnable=($_GET["regEnable"]);
 +
 +if (empty($ipTel)){
 +//echo "Empty";
 +}
 +else{
 +function push2phone($server,$phone,$data)
 +{
 +$xml = $data;
 +$post = "POST /xmlService? HTTP/1.1\r\n";
 +$post .= "Host: $phone\r\n";
 +$post .= "Referer: $server\r\n";
 +$post .= "Connection: Keep-Alive\r\n";
 +$post .= "Content-Type: text/xml\r\n";
 +$post .= "Content-Length: ".strlen($xml)."\r\n\r\n";
 +$fp = @fsockopen ( $phone, 80, $errno, $errstr, 5);
 +if($fp)
 +{
 +fputs($fp, $post.$xml);
 +flush();
 +fclose($fp);
 +}
 +}
 +##############################
 +$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
 +$xml .="<FanvilIPPhoneConfiguration Beep=\"yes\" setType=\"config\">\n";
 +$xml .="<Item>sip.line.1.PhoneNumber = $tel</Item>\n";
 +$xml .="<Item>sip.line.1.DisplayName = $tel</Item>\n";
 +$xml .="<Item>sip.line.1.RegAddr = 192.168.1.5</Item>\n";
 +$xml .="<Item>sip.line.1.RegUser = $tel</Item>\n";
 +$xml .="<Item>sip.line.1.RegPswd = $password</Item>\n";
 +$xml .="<Item>sip.line.1.RegEnabled = $regEnable</Item>\n";
 +$xml .="</FanvilIPPhoneConfiguration>";
 +
 +//echo "$tel $password $ipTel";
 +
 +push2phone("192.168.1.5","$ipTel",$xml);
 +}
 +?>
 +</code>
 +
 +Код в 1С который берет данные из AD и отправляет их на веб сервер где лежит скрипт приведенный выше.
 +
 +<code | ini>
 +
 + илУчетнаяЗаписьТелефонии = 0;
 + Если ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыКлиента"].Свойство("илУчетнаяЗаписьТелефонии") Тогда
 +     илУчетнаяЗаписьТелефонии = ПараметрыПриложения["СтандартныеПодсистемы.ПараметрыКлиента"].илУчетнаяЗаписьТелефонии;
 + КонецЕсли;
 +
 + Если НЕ ЗначениеЗаполнено(илУчетнаяЗаписьТелефонии) Тогда
 + илУчетнаяЗаписьТелефонии = 0;
 + КонецЕсли;
 +
 + ИмяКомпьютера=ИмяКомпьютера();
 +
 + Если ИмяКомпьютера = "comp1" Тогда
 + АйПиАдресТелефона="192.168.1.1";
 + ИначеЕсли ИмяКомпьютера = "comp2" Тогда
 + АйПиАдресТелефона="192.168.1.2";
 + ИначеЕсли ИмяКомпьютера = "comp3" Тогда
 + АйПиАдресТелефона="192.168.1.3";
 + ИначеЕсли ИмяКомпьютера = "comp4" Тогда
 + АйПиАдресТелефона="192.168.1.4";
 + Иначе
 + АйПиАдресТелефона=0;
 + КонецЕсли;
 +
 + Если илУчетнаяЗаписьТелефонии <> 0 И АйПиАдресТелефона <> 0 Тогда
 + Попытка
 + ИмяДомена="corp.local";
 + ws = новый COMОбъект("WScript.Network");
 +
 + АДОКоннектор = Новый COMОбъект("ADODB.Connection");
 + АДОКоннектор.ConnectionString = "Provider=""ADsDSOObject""";
 + АДОКоннектор.Open();
 +
 + ТекстЗапроса = "
 + |SELECT AdsPath
 + |FROM 'LDAP://" + ИмяДомена + "'
 + |WHERE 
 + |    objectCategory = 'user'
 + |    and objectClass = 'person' 
 + |    and SAMAccountName = '" + илУчетнаяЗаписьТелефонии + "' 
 + |ORDER BY sn
 + |";
 +
 + ВыборкаАДО = АДОКоннектор.Execute(ТекстЗапроса);
 +
 + Если НЕ ВыборкаАДО.EOF Тогда
 + ПутьОбъекта = ВыборкаАДО.Fields("AdsPath").Value;
 + ОбъектАД = ПолучитьCOMОбъект(ПутьОбъекта);
 + НомерТелефона=ОбъектАД.telephoneNumber;
 + Почта=ОбъектАД.mail;
 + КонецЕсли;
 +
 + СерверДляЗапроса = "push.corp.local";
 + ТекстДляЗапроса = "phoneNumberChanger.php?TelephoneNumber="+НомерТелефона+"&email="+Почта+"&IpTelephone="+АйПиАдресТелефона+"&regEnable="+РегаАйПиТелефона+"";
 +
 + Соединение = Новый HTTPСоединение(СерверДляЗапроса);     
 + Запрос = Новый HTTPЗапрос(ТекстДляЗапроса);
 +
 + Результат = Соединение.Получить(Запрос);
 + Исключение
 + КонецПопытки;
 + КонецЕсли;
 +
 +</code>
 +
  
pushxmlfanvil.txt · Последнее изменение: 2021/04/27 04:10 — sector

Яндекс.Метрика