こんにちは、ハラジテリ。 最近、ハブにアスタリスクとテレグラムの統合に関するいくつかの記事が登場しました: one 、 two 。
別のオプションを検討することを提案します。
何らかの理由で、これらの解決策は私には適していない。
客観的な理由のための何か:レビューによると、telegram-cliを使用することはあまり安定しておらず、それを使用するには電報アカウントでサーバーにログインする必要があります。
主観的なもの:オプション1のようにphpを使用し、従業員にボットに番号を書き込ませたくありませんでした。
もちろん、自分で車輪を再発明することは非常に興味深いことです。あなたのアイデアを実現するプロセスの喜びを誰もキャンセルしませんでした:)
ソースデータ:
クライアントには携帯電話を備えた複数のリモートマネージャーがいて、コールは共通のSIP番号へのアスタリスクに送られ、その後SIPトランクを介してモバイルマネージャーに転送されます。 このスキームでは、多くの設備があります。マネージャーはオフィスに座る必要はありませんが、働くことができます。これは「現場」と呼ばれます(@boffartすみません、盗作:)。 ただし、すべての長所を上回る不便な点が1つあります。元のCalleridクライアントが表示されないことです。
この不便を回避するため、「番号$ {CALLERID(num)}から番号$ {EXTEN}への着信」という形式のメッセージを電報で一般管理者グループに送信することが決定されました。
それでは始めましょう:
コール通知をグループに送信するには、電報ボットが必要です。 新しいボットの登録は非常に簡単なプロセスであり、 ここで非常に詳しく説明されています。
ボットを登録した後、アスタリスクから呼び出される小さなpythonスクリプトを作成し、電報で通知を送信します。
使用されているpythonバージョンは2.7です
CentOS 6.6ですべてを実装しました。Centos6.6はそのままでPython 2.6を使用します(コンソールでpython -Vと入力することでPythonのバージョンを確認できます)。まず、Python 2.7をインストールする必要があります。 rpmパッケージからのインストールとソースからのインストールの2つのオプションがあります。 両方を検討してください。
ソースからのインストール
システムを更新し、必要なパッケージを提供します。
yum -y update yum groupinstall -y 'development tools' yum install -y zlib-dev openssl-devel sqlite-devel bzip2-devel yum install xz-libs
Python 2.7のソースコードをダウンロードします。
wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz xz -d Python-2.7.6.tar.xz tar -xvf Python-2.7.6.tar
Python 2.7を構成してインストールします。
cd Python-2.7.6 ./configure --prefix=/usr/local/bin ( , $HOME) make make altinstall
pip 2.7をインストールします。
setuptools wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz tar -xvf setuptools-1.4.2.tar.gz cd setuptools-1.4.2 python2.7 setup.py install pip curl https://bootstrap.pypa.io/get-pip.py | python2.7 -
rpmからのインストール
rpmパッケージを追加し、python、pipをインストールします。
rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/epel-release-6-5.noarch.rpm rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/ius-release-1.0-14.ius.el6.noarch.rpm yum clean all yum install python27 yum install python27-pip
必要なバージョンのPythonがインストールされている場合、Telegram APIを操作するためのライブラリをインストールします。
pip2.7 install pyTelegramBotAPI==2.3.1
そして、直接スクリプトコード自体:
#!/usr/local/bin/python2.7 # -*- coding: utf-8 -*- import telebot import sys token = 'INSERT_YOUR_TOKEN' # API group_id = -123456789 # id , ( , id - ) bot = telebot.TeleBot(token, skip_pending=True) # ( ) @bot.message_handler(func=lambda message: True, commands=['start']) def start(message): if len(sys.argv) != 1: return bot.send_message(message.chat.id, "ID : " + str(message.chat.id)) print message.chat.id sys.exit() # , if len(sys.argv) == 4: callerid = str(sys.argv[1]) exten = str(sys.argv[2]) redirectnum = str(sys.argv[3]) bot.send_message(group_id, " " + callerid + "\n " + exten + "\n " + redirectnum) # , if len(sys.argv) == 1: bot.polling(none_stop=True)
事は小さいために残った:着信コールを受け取る前に、アスタリスクダイヤルプランからスクリプトを呼び出して下さい。 私はそれを持っています、例えば、これ:
vim /etc/asterisk/extensions.conf:
exten => 84951234567,1,Set(CALLERID(num)=+7${CALLERID(num)})
same => n,Answer()
same => n,Playback(hello)
same => n,Set(REDIRECTNUM=+79261234567)
same => n,System(/etc/asterisk/redirector/redirector.py ${CALLERID(num)} +7${EXTEN:1} ${REDIRECTNUM})
same =>n,Dial(SIP/mytrunk/mymobilenumer&SIP/mytrunk/mymobilenumber2,40,tTm(default))
same =>n,Hangup()
着信コールの場合、マネージャーは電報グループで同様のメッセージを受信します。
便宜上、Khabrovitesはgithubですべてを設計しました。
結論として、このプロジェクトを実装することは非常に興味深く、結果は非常に良かったことに注意したいと思います。 誰かがこの実装が役立つと思うかもしれません。
投稿者:アスタリスク、 サウスブリッジミハイルコモフ。