понедельник, 25 апреля 2016 г.

История настройки одной телефонии в Битрикс24 (коробка)

Обратился к нам недавно один клиент и говорит: "Купили Битрикс24 почти год назад, и с тех пор никто не может настроить нам телефонию". Я подумала, что стоит разобраться с проблемой этого клиента - телефонию мы до этого в коробочной версии Битрикс24 настраивали неоднократно, и я думала, что меня вряд ли можно чем-то удивить по части ее настройки. Однако впереди нас ждали увлекательные открытия. 

Зайдя в портал клиента на страницу Телефония - Балланс и статистика, я увидела 2 арендованных номера внутренней Битриксовской телефонии, но ни страница детализации звонков, ни страницы настроек этих телефонных номеров - не открывались. Я предположила, что модуль телефонии поврежден либо на уровне файлов, либо на уровне БД. Мониторинг качества показывал, что файлы модуля телефонии не были модифицированны. А вот в БД отсутствовала таблица b_voximplant_config. Я восстановила таблицы модуля телефонии из одного из старых бекапов портала клиента, к-е, к счастью, снимались у клиента автоматически. 

Страницы детализации звонков и настройки телефонных номеров стали открываться, и в статистике даже были кое-какие записи звонков, из которых я заключила, что телефония у клиента уже была настроена, но потом почему-то отвалилась. Однако ни на входишие звонки, ни на исходящие - телефония не работала, а серверный тест Битрикс показывал кучу ошибок, относящихся к работе бизнес-функций портала, модуля Push and Pull 

Мы перенесли клиента на Сервера без забот хостинга Русоникс, а так же настроили для портала клиента SSL сертификат и работу по протоколу https, после этого серверный тест Битрикс перестал выявлять проблемы, а исходящие и входящие звонки через телефонию Битрикс стали осуществляться нормально. Я сказала клиентам, что они могут тестировать телефонию, и я видела по журналу в детализации звонков, что они активно ею пользуются. 

Однако ИТ отдел клиента начал жаловаться мне, что они "не знают тех людей, чьи записи звонков прослушивают в детализации". Сначала я подумала, что они просто не знают всех сотрудников своей компании, но когда начала сама прослушивать записи звонков в портале, я поняла, что в портал моего клиента сохраняются записи каких-то совершенно "левых" звонков (там в записях сотрудники почти всегда называли название другой компании, представляясь). 

Я написала об этой проблеме в ТП Битрикс. Битриксоиды начали прорабатывать проблему по своим каналам, и выяснилось, что предыдущий подрядчик клиента (то ли самый первый, то ли промежуточный - клиент их сменил несколько) как-то умудрился по ошибке ввести лицензионный ключ от портала моего клиента в портале другого клиента, и после этого аккаунты телефоний этих двух клиентов "склеились", и нам падали записи звонков тех других клиентов, а они, в свою очередь, могли слушать у себя в портале записи наших тестовых звонков. 

Битриксоиды заменили моему клиенту лицензионный ключ - но это не решило проблему - сами по себе аккаунты телефонии не расклеились. Я продолжала писать сообщения об этом в поддержку Битрикса, и в итоге они сменили моему клиенту и номер аккаунта на стороне информационного посредника voximplant, но, правда, все настройки модуля телефонии пришлось удалить и отвязать арендованные телефоны, ну и деньги на аккаунте клиента сгорели, конечно, но это уже были мелочи в масштабе всех проблем. 

Арендовали клиенту новый номер в телефонии Битрикс24 - и на нем все работало как надо. Чужие телефонные звонки мы больше не слушали. 

Эпопея на этом не закончилась. У клиента был еще арендован старый телефонный номер у Плюсофона https://plusofon.ru/, и, естественно, клиент не хотел терять этот номер, а хотел привязать его в Битрикс24 через SIP. Поддержка Плюсофона сообщила нам, что их телефоны еще ни разу не удалось подключить к Битрикс24, но я подумала, что SIP - он и в Африке SIP, и решила, что он заработает, если хорошо захотеть и проявить терпение и методичность, общаясь с обеими техподдержками. 

Для начала я запросила логины/пароли SIP аккаунтов у Плюсофона, и не стала сразу пробовать подключить их в Битрикс24, а скачала себе на телефон популярный SIP клиент Зойпер, чтобы изолированно проверить, работает ли у них SIP вообще. Подключиться не удавалось. Расследование показало, что те логины/пароли SIP к-е видели админы моего клиента в личном кабинете Плюсофона - были неправильными. Плюсофоновцы уже пофиксили эту проблему. 

Далее я ввела логин/пароль одного из SIP пользователей в подключение на стороне Битрикс24. Исходящий звонок не проходил - пользователь SIP светился в сети Плюсофона как оффлайн. Пообщавшись немного с техподдержкой Плюсофона, я натолкнула их на мысль, что у них на серверах IP-адреса, с которых проходит сигнал от Битрикс - в черных списках. Действительно, на Плюсофоне к SIP было разрешено подключаться только с Российских IP-адресов, а так как звонок из Битрикс идет через информационного посредника voximplant, сигнал приходил на Плюсофон с IP-адресов, относящихся к территории США. Плюсофоновцы разрешили коннекты с этих адресов, и исходящие звонки через SIP стали проходить из портала клиента. 

На этом история не закончилась. Я заметила, делая звонки через SIP из портала клиента, что запись звонков не происходит, хотя стоит соответствующая галка, а тестовые минуты для тестирования SIP не списываются (жаль, не провела исследование, сколько так реально можно бесплатно звонить). Написала снова в ТП Битрикс, они сказали мне включить на стороне сервера директиву proxy_ignore_client_abort on; - это решило проблему. 

Далее я начала тестировать SIP на входящие звонки в портал. Звонки то проходили, то не проходили. По логам Плюсофона теперь уже сервера voximplant отклоняли их коннекты (не каждый раз). Долго я посылала эти логи в поддержку Битрикса. Они долго отказывались признавать эту проблему, потом я уже не выдержала и написала Рыжикову (спасибо ему, что вник). После этого Битриксоиды что-то подкрутили на стороне voximplant, и звонки через SIP, наконец то, стали проходить стабильно. 

В следующем посте, я расскажу, как мы интегрировали с порталом Битрикс24 клиента программную АТС на базе Астриск.

воскресенье, 24 апреля 2016 г.

Как я сдавала второй экзамен по Битрикс

Как я писала в прошлом посте, с сентября 2016 года для подтверждения статуса Золотого партнера, нужно иметь в команде, как минимум, 1го разработчика, сертифицированного по новой системе до уровня "Профессионал" и второго разработчика, сертифицированного до уровня "Базовый". Мне нужно подтверждать статус золотого партнера только в январе 2017, но я привыкла готовить сани летом, поэтому уже сейчас занялась этой проблемой.

Забегая вперед, скажу, что я уже сертифицировалась до уровня "Профессионал" лично, а мои ребята уже начали экзаменоваться на "Базовый" уровень, и я надеюсь, они все получат в ближайшем будущем и "Профессионала".

А теперь о том, как это было. Второй экзамен был сложнее первого. К первому я не готовилась - на первом экзамене меня больше волновали технические моменты: нормально ли распознается снимок моего паспорта, хорошо ли работает моя камера и тому подобное.

Просмотрев 2 предложенных для подготовки открытых билетов для экзамена по теме "Основные технологии и расширение типовых возможностей системы", я поняла, что второй экзамен без подготовки - может не прокатить, потому что заданий в билете достаточно много для 4х часов, отведенных на экзамен. Я прорешала оба эти билета, измерила примерное время и, наученная опытом первого экзамена, умножила это время на 1,5 - потому что на тормозном экзаменационном сервере все получается медленнее в полтора раза, да плюс - мандраж.

Поняла, что в 4 часа уложиться будет возможно, только отрепетировав решение экзаменационных задач практически до автоматизма.

И я отрепетировала все мелкие задания на локалке, так, чтобы тратить на каждое не более 7-10 минут. Планировала на экзамене потратить на всю мелочевку не более часа, а остальное время посвятить заданиям про создание простого и комплексного компонента - там много вылизывать. (На экзамене у меня на мелочевку реально ушло 2 часа, и еще 1,5 часа - на разработку простого и комплексного компонента. 30 минут осталось на самопроверку.)

Накануне экзамена я решила сразу выбрать наиболее подходящий стандартный компонент в качестве основы для решения задачи про разработку простого компонента для вывода списка вакансий. Вот тут вышел казус, которым я просто не могу не поделиться.

В одном из пробных билетов (или в обоих) этот компонент - список вакансий должен был помимо прочего поддерживать технологию Эрмитаж. Выбрала я стандартный битриксовский компонентик, который как раз поставляется с решением «Корпоративный сайт производственной компании» - называется furniture.vacancies.

Посмотрела его - переделывать нужно минимально, эрмитаж - реализован. На экзамене его и взяла.

А в нем для вычисления адресов Эрмитажевских кнопок шел такой код:
$arResItems["EDIT_LINK"] = '/bitrix/admin/iblock_element_edit.php?ID='.$arResItems["ID"].'&type='.$arParams["IBLOCK_TYPE"].'&lang='.LANGUAGE_ID.'&IBLOCK_ID='.$arParams["IBLOCK_ID"].'&find_section_section='.$arResItems["IBLOCK_SECTION_ID"].'&bxpublic=Y&from_module=iblock';
$urlDelete = CIBlock::GetAdminElementListLink($arParams["IBLOCK_ID"], array('action'=>'delete'));
$urlDelete .= '&'.bitrix_sessid_get();
$urlDelete .= '&ID='.(preg_match('/^iblock_list_admin\.php/', $urlDelete)? "E": "").$arResItems["ID"];
$urlDelete = "/bitrix/admin/".$urlDelete;
$arResItems['DELETE_LINK'] = $urlDelete;
Я его оставила - этот код рабочий, он решает поставленную передо мной задачу и он использован в стандартном компоненте Битрикс, а стандартные компоненты - это для нас пример и эталон правильного кода. Какого же было мое удивление, когда экзаменаторы указали мне на ошибку:

- Значительная ошибка: в компоненте кнопки для технологии "Эрмитаж" вычисляются "в лоб" (файл component.php, строки 56-62). Следует использовать метод CIBlock::GetPanelButtons

Вот так друзья - не все стандартные компоненты Битрикс можно брать за образец. Нет, я, конечно, никогда не претендовала на то, чтобы мой код был образом чистоты, порядка и эффективности - слава богу, в моей команде есть программисты сильнее меня, а если бы было не так - это был бы мой прокол, как руководителя.

Но вот такое ханжество проверяющих меня слегка зацепило. Ханжество - требовать от других соответствия критериям, которым не соответствуешь сам. Как же так? В коробке Битрикс живут компоненты со Значительными ошибками?  Хотя, конечно, мне грех обижаться - ведь экзамен мне зачли успешно сданным, несмотря на эту ошибку.


И да, в целом это был интересный и полезный опыт для меня.  Когда над тобой уже много лет нет проверяющего, когда никто не контролирует твой код, когда ты растешь только благодаря какому-то обмену опытом с друзьями-коллегами - взгляд со стороны получать время от времени очень важно. Если Битриксоиды в будущем выпустят третий и четвертый экзамены, как обещали, я обязательно пойду и на них.

среда, 6 апреля 2016 г.

Как я сдавала новый экзамен по Битрикс

На зимней партнерской конференции 2016г нас обрадовали известием о том, что старые сертификаты разработчиков с сентября 2016г будут терять силу, и для того, чтобы остаться золотым сертифицированным партнером в 2017 году, мне нужно сертифицировать, как минимум, 2х разработчиков из своей команды по новой системе.

Передо мной встала дилемма: сдавать ли экзамены самой или просто заставить сдать экзамены 2х других разработчиков из моей команды, которые, в общем то практикуют программирование под Битрикс намного чаще чем я в силу того, что 70% моего рабочего времени я внедренец, менеджер проектов и продажник в одном лице, а они целыми днями только программируют и вообще не тратят время ни на что постороннее.

Думала я, думала. И решила, что должна сдать экзамены сама, чтобы не потерять уважение и авторитет в своей маленькой компании.

Когда я прочитала все требования к экзамену по новой системе и экзаменационные билеты у меня началась дикая головная боль: где сдавать: дома или в офисе?, какую камеру воткнуть?, с ПК или с ноута? Билеты по теме "Интеграция дизайна и настройка системы" не вызывали у меня особых вопросов, хотя лично я не занималась интеграцией дизайна в Битрикс уже, наверное, года 4 с тех пор, как я научилась полноценно делегировать. Я освежила память видеокурсом по данной теме, развернула у себя на виртуалке демку экзаменационной среды, посмотрела на нее. Хотела прорешать билеты для подстраховки, но в времени не нашла - как раз навалилось много клиентских проектов, когда я уже выбрала день экзамена.

В день экзамена (это была суббота) я заперлась дома в одной из комнат, предварительно выгнав кошку, которая всегда лежит у меня на компьютерном столе, если я за ним сижу. Запаслась орбитом - он спасает меня, когда я нервничаю, и начала сдавать. Я нажала на кнопочку "Сдать экзамен" - система показала мне поток моей камеры и попросила сделать фотку моего лица - для этого там на страничке прямо под трансляцией потока камеры была кнопка "сделать снимок", я сделала, потом аналогично нужно было сделать фото паспорта, да так чтобы был виден его номер (переделывала раз 5 - почему-то когда снимался снимок, возможности моей камеры, а она реально очень хорошее разрешение может давать, не использовались на полную катушку), потом несколько снимков помещения, в котором сдаешь экзамен. После этого, система предупредила меня, что по нажатию следующей кнопки экзамен начнется. Я нажала.

Мне пришли реквизиты доступа к экзаменационному серверу. Я подключилась с ними к сереверу через NoMashine. Ссылка на мой экзаменационный билет, а так же скомпиленная справка по Битрикс-апи и по php лежали на рабочем столе сервера. Не удобным было то, что там на сервере было очень низкое разрешение экрана и на моем огромном мониторе получался только маленький прямоугольник в центре. Я уверена, что это можно было как-то растянуть на весь мой экран, но не стала терять время. Ну, может быть, стоило и потратить на это время, потому что приходилось щуриться - все было так мелко, и я постоянно то впечатывала символ не там, то стирала не то, что хотела. А так по скорости работы ничего не тормозило (дома у меня 30М канал, если не ошибаюсь).

Заданий в билете было 13 - счастливое число. И объем работы там было прямо таки приличный. Думать особо некогда - нужно знать как делать и делать сразу. Когда я сделала 2 задания и посмотрела, сколько времени уже прошло, меня начало даже слегка мандражить, потому что я поняла что надо ускоряться. (Все же когда ты работаешь не одна, а в команде - ответственность перед другими сильно давит на психику. Думаешь: "Я не могу их подвести" И от этого пальцы начинают заплетаться на клавиатуре.) Я уничтожила пачку орбита, ускорилась. И в общем, когда я прорешала все 13 заданий, прошло 3 часа от начала экзамена. Я еще раз прошлась по всему заданию, выискивая места, которые я не правильно поняла или невнимательно прочитала - даже нашла 2 таких места, было время спокойно их исправить. Где-то за полчаса до окончания экзамена, я подумала, что дальше проверять себя нет смысла - устала уже, и я нажала кнопку "Завершить досрочно".

В итоге сегодня мой экзамен проверили и выдали мне мой сертификат:



В принципе, я довольна, что проверила себя и планирую в ближайшее время пойти на 2й экзамен. И еще я знаю, что если ко мне в команду придет готовый специалист с сертификатом по интеграции дизайна и настройке платформы Битрикс, я смело смогу кинуть его на огромное количество клиентских задач и 100% загружу его работой выше крыши, потому что тот набор технологий, которые он изучил, готовясь к сдаче данного экзамена - владея только ими можно решать огромный пласт типовых задач.