Тем не менее, когда они в офисе, они бы хотели, чтобы система знала, за каким столом они работают, чтобы звонки, адресованные им, направлялись именно туда. Также руководитель хочет иметь возможность отслеживать, когда они находятся в офисе, и управлять привилегиями звонков, производимых с этих телефонов, в их отсутствие.

Решением в такой ситуации, как правило, является использование так называемой системы «горячих столов» (hot-desking). Мы реализовали такую функцию для вас, чтобы продемонстрировать мощь func_odbc. Начнем с простого и создадим два настольных телефона в файле sip.conf.

; sip.conf

; ПОЛЬЗОВАТЕЛИ СИСТЕМЫ 'ГОРЯЧИХ СТОЛОВ'

[desk_1]

type=friend

host=dynamic

secret=my_special_secret

context=hotdesk

qualify=yes

[desk_2]

type=friend

host=dynamic

secret=my_special_secret

context=hotdesk

qualify=yes

; КОНЕЦ ОПИСАНИЯ ПОЛЬЗОВАТЕЛЕЙ 'ГОРЯЧИХ СТОЛОВ' Это два настольных телефона, звонки на которые обрабатываются в контексте [hotdesk] файла extensions.conf. Если вы хотите, чтобы эти устройства на самом деле работали, конечно, понадобится задать соответствующие параметры в самих устройствах, но это все рассматривалось в главе 4.

Для файла sip.conf это все. У нас уже есть два кусочка хлеба, но это еще не сэндвич.

Теперь давайте настроим базу данных (предполагаем, что коннектор ODBC базы данных создан и работает, как описывалось в предыдущих разделах данной главы). Сначала подключимся к консоли базы данных следующим образом: # su - postgres

$ psql -U asterisk -h localhost asterisk

Password:

Затем, используя следующий фрагмент кода, создадим таблицу: CREATE TABLE ast_hotdesk (

id serial NOT NULL, extension int8,first_name text, last_name text, cid_name text, cid_number varchar(10), pin int4, context text,

status bool DEFAULT false, 'location' text,

CONSTRAINT ast_hotdesk_id_pk PRIMARY KEY (id)

)

WITHOUT OIDS;

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

asterisk=> INSERT INTO ast_hotdesk ('extension', 'first_name', 'last_name', 'cid_name', 'cid_number', 'pin', 'context', 'location') VALUES (1101, 'Leif', 'Madsen', 'Leif Madsen', '4165551101', '555', 'longdistance', 'desk_1');

Повторите предыдущую строку и введите собственные значения VALUES для всех записей, которые вы желаете видеть в базе данных. Данные таблицы ast_hotdesk можно увидеть, выполнив простой запрос SELECT из консоли PostgreSQL:

asterisk=> SELECT * FROM ast_hostdesk; в результате чего будет получен примерно такой вывод:

Теперь у нас есть все ингредиенты, можно приниматься за диалплан. Вот здесь и начинается волшебство.

Прежде чем вы начнете писать программу, обращаем ваше внимание, что весь текст примера можно найти в приложении G. Хотя мы рекомендуем разобрать весь пример вместе с нами по шагам, в приложении вы можете увидеть его целиком (и скопировать его код, если у вас есть электронная версия данной книги).

В файле extensions.conf мы собираемся создать контекст [hotdesk]. Для начала определим шаблонный добавочный номер, который обеспечит возможность пользователям регистрироваться в системе:

; extensions.conf ; функция 'горячих столов' [hotdesk]

; Регистрация 'горячего стола'

exten => _ 10[1-5] 1 NoOp()
exten => _ 10[1-5] n Set(E=${EXTEN})
exten => _ 10[1-5] n Verbose(1|Hot Desk Extension ${E} is changing status
exten => _ 10[1-5] n Verbose(1|Checking current status of extension ${E})
exten => _ 10[1-5] n Set(${E}_STATUS=${HOTDESK_INFO(status,${E})})
exten => _ 10[1-5] n Set(${E}_PIN=${HOTDESK_INFO(pin,${E})})
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату