использование_телефонии_asterisk_с_microsoft_ad

Использование телефонии Asterisk на предприятии с инфраструктурой Microsoft Active Directory

Запись

Техническое задание: Сделать рабочие места в офисе универсальными. Звонок на корпоративный номер сотрудника должен приходить на телефонный аппарат расположенный там, где в данный момент работает сотрудник. Пример: Необычный офис Philips – без определенного места работы

1. Развертывание сети предприятия

Техническое задание: реализовать технологию единого входа для доступа к сервисам предприятия

2. Развертывание телефонии предприятия

Техническое задание: развернуть телефонию предприятия с номерным планом 4XX, привязанным к телефонным аппаратам

PBX

401, 402

403

Звоним

gate*CLI> channel originate SIP/403 extension 401

gate*CLI> channel originate SIP/403 extension 402

phone2*CLI> channel originate Console/dsp extension 403

3. Интеграция телефонии с LDAP каталогом предприятия

Техническое задание: использовать LDAP каталог предприятия для установки текстового CallerID при телефонных вызовах

  • Заполняем атрибуты Display Name, Telephone number, Address→Zip/Postsal code (пароль телефона)

Копирование всей, необходимой для телефонии информации из LDAP в текстовый файл

# cat /root/create_login_phone_table.sh
#!/bin/sh

IFS=' '

ldapsearch -x -D "cn=Administrator,cn=Users,dc=corp6,dc=un" -w 'Pa$$w0rd' -h server.corp6.un -b "dc=corp6,dc=un" "(telephoneNumber=4*)" sAMAccountName cn telephoneNumber postalCode | perl -p00e 's/\r?\n //g'|
while read s
do
        echo $s | grep -vq '^dn:' && continue
        read fn cn
        echo $fn | grep -q '::' && cn=`echo $cn | base64 -d`
        read fn pass
        read fn tn
        read fn login
        echo $login $tn $pass $cn
done
# /root/create_login_phone_table.sh > /root/login_phone_table.txt 

# cat /root/login_phone_table.txt
user1 401 tpassword401 Ivan I. Ivanov
user2 402 tpassword402 Petr P. Petrov
user3 403 tpassword403 Sidor S. Sidorov
user4 404 tpassword404 Vsily M. Koshkin
user5 405 tpassword405 Федор И. Шаляпин

Размещение адресной книги в формате HTML

# cat /root/login_phone_table.txt | awk 'BEGIN {print "<html><body><table>"} {print "<tr><td>" $4 " " $5 " " $6 "</td><td>" $2 "</td></tr>"} END {print "</table></body></html>"}' > /var/www/html/addrbook.html

Создание файла для импорта адресной книги в формате телефонов Panasonic

# cat /root/login_phone_table.txt | awk '{printf ("\t%s %s %s\t\t%s\t\t\t\t\t\n",$4,$5,$6,$2)}' | unix2dos | iconv -f utf-8 -t utf-16 > phonebook.tsv

Создание файла users.conf

# cat /root/create_users_conf.sh
#!/bin/sh

while read login cid_number secret fullname
do
        echo "[$cid_number]"
        echo "cid_number = $cid_number"
        echo "fullname = $fullname"
        echo "secret = $secret"
        echo "type=friend"
        echo "host=dynamic"
        echo
done
# /root/create_users_conf.sh < /root/login_phone_table.txt > /etc/asterisk/users.conf

# cat /etc/asterisk/users.conf
[401]
cid_number = 401
fullname = Ivan I. Ivanov
secret = tpassword401
type=friend
host=dynamic
...
# cat /etc/asterisk/sip.conf
[general]
transport=udp
disallow=all
allow=alaw

#include "/etc/asterisk/users.conf"

[403]
secret=tpassword403
type=friend
host=dynamic
# asterisk -x 'sip reload'
# asterisk -x 'sip show users'

4. Настройка телефонного аппарата на номер использующего его сотрудника

Техническое задание: использовать событие входа сотрудника в домен для настройки телефонного аппарата на его номер

4.1 Подготовка к демонстрации по вебинару

4.2 Настройка Provisioning на Asterisk телефоне

root@gate.corpX.un:~# cat /var/www/html/0800.2700.d8e8.cfg
[sipproxy]
type=peer
defaultuser=40N
secret=tpassword40N
host=gate.corpX.un
insecure=invite
callbackextension=sipproxy
[phone2:~] # cat /root/fetch_conf.sh
#!/bin/sh

/usr/local/bin/curl -s http://gate.corp6.un/0800.2700.d8e8.cfg > /usr/local/etc/asterisk/users.conf

/usr/local/sbin/asterisk -x 'sip reload'
[phone2:~] # crontab -l
* * * * * /root/fetch_conf.sh
[phoneN:~] # cat /usr/local/etc/asterisk/sip.conf
[general]
...
defaultexpiry=30

#include "/usr/local/etc/asterisk/users.conf"

4.3 Определение на какой рабочей станции зарегистрировался пользователь

gate# tail -n /disk2/logon.txt

4.4 Определение mac адреса телефона, через который подключена рабочая станция

switch(config)
interface VLAN1
ip address 192.168.6.3 255.255.255.0
no shut
exit

ip rcmd rcp-enable
ip rcmd rsh-enable
no ip domain lookup

ip host gate 192.168.6.1
ip rcmd remote-host root gate root enable

mac-address-table aging-time 1000000
gate# apt install rsh-client

gate# host CLIENTN

gate# arp -a

gate# echo "192.168.6.3 switch" >> /etc/hosts

gate# rsh switch show mac-address-table

4.5 Собираем все вместе

gate# cat /root/create_phone_conf.sh
#!/bin/sh

IFS=' '

while read login host other
do
        ip=`host $host | cut -d' ' -f4`
        mac=`arp -a | grep $ip | cut -d' ' -f4`
        mac_format=`echo $mac | sed -E 's/(..):(..):(..):(..):(..):(..)/\1\2.\3\4.\5\6/'`
        phone_if=`rsh switch show mac-address-table | grep $mac_format | sed -E 's/.*(Fa.*)/\1/'`
        phone_mac=`rsh switch show mac-address-table | grep -v $mac_format | grep $phone_if | cut -f 1`
        str=`grep "^$login" /root/login_phone_table.txt`
        defaultuser=`echo $str | cut -d' ' -f2`
        secret=`echo $str | cut -d' ' -f3`
        fullname=`echo $str | cut -d' ' -f4,5,6`

cat > /var/www/html/$phone_mac.cfg <<END
[sipproxy]
fullname=$fullname
type=peer
defaultuser=$defaultuser
secret=$secret
host=gate.corp6.un
insecure=invite
callbackextension=sipproxy
END

done
gate# tail -n0 -f /disk2/logon.txt | /root/create_phone_conf.sh
  • Звоним:
gate*CLI> channel originate SIP/403 extension 401

gate*CLI> channel originate SIP/403 extension 402

Итог

использование_телефонии_asterisk_с_microsoft_ad.txt · Last modified: 2017/03/31 10:17 by val