自宅のPBX

Ukrtelecomの固定電話があります。 そして、彼らが電話ケーブルを盗まなければ、すべてがうまくいくでしょう。 そして再び都市とのつながりなしに去り、私は選択肢を探すことにしました。 インターネットは私の目の前にあります。 UkrtelecomがSIPテレフォニーサービスを提供していることを知ったので、少量の血液でこの問題を解決できることをすでに喜んでいます。 しかし、私の番号が変わることが判明しました。 しかし、私がUkrtelecomを離れることを妨げたのは、古い問題だけです。 私は自分の番号を失うことを避けられなかったので、接続をより密接に提供するという問題に取り組むことにしました。



私はすぐにCDMAハンドセットを最初の選択肢として見ますが、私の家には3つのハンドセットで2つのベースに巻き上げられた6つのハンドセットがあります(家に4つのハンドセット、夏のキッチンに1つ、ガレージに1つ)、これはハンドセットが常に手元にあり、持ち歩く必要があります。 当時、 Huawei-1201の CDMA端末については知りませんでした。知っていれば、この記事は存在しませんでした。 したがって、SIPテレフォニーの世界で私の決断を見ました。



アナログ電話をSIP回線に接続するには、VOIPゲートウェイが必要であることがわかりました。 さて、電話はデジタルになるので、「コントロールパネル」を作成してみませんか?



その瞬間、SIPテレフォニーについては、Habrのアスタリスクに関する見出しを読み、スキップして、次のように考えました。



1)私にとって非常に難しい。

2)それは私には役に立たないでしょう。



両方の点で、私は間違っていました。



昔、TP-Link TL-WR842ルーターにOpenWrtをインストールすることについて、Dmitry Bachiloのビデオを見ました。 彼のビデオのDmitryに感謝します。 そして、自分でルーターを選んだとき、DmitryがOpenWRTをインストールしたルーターを購入することにしました。そのため、別のルーターを購入してもOpenWRTをサポートしていないのに驚きません。 購入直後にルーターにOpenWRT 15.05.1をインストールし、USBフラッシュドライブをルーターに挿入して、ホームファイルをウォッシュします。 それは約10〜12ヶ月前でした。 率直に言って、私は以前OpenWRTを扱ったことがなく、Dmitryのビデオのおかげで多くのテクノロジーについて学びました。



また、GSMモデムをアスタリスクにねじ込むことに関する記事を見つけました。 ルーターにusbポートがあったので、このタスクを実行することにしましたが、どちらの側で問題を解決すればよいかさえわかりません。



OpenWrtにAsterisk 11をインストールするためのステップバイステップガイドを見つけたので、私は各ステップをたどって、それをフォローし始めました。 ただし、OpenWRT 15でAsterisk 11を起動しようとしたときに失望し、セグメンテーションエラーが発生しました。 知らない読者が最初に抱く質問は、なぜアスタリスク11なのかということです。 ファーウェイGSMモデムをアスタリスクにねじ込むことができるchan_dongleパッケージがあるのはこのバージョンのためです。 セグメンテーション違反の原因をインターネットで検索した後、「OpenWRT 15は悪い、OpenWRT 14は良い」以外のわかりやすいものは見つかりませんでした。 私はこの問題の経験がなかったので、「書かれたものを信じる」必要がありました。 OpenWRTの14番目のバージョンをインストールしても、Asteriskをインストールして実行できました。 しかし、これは十分ではありません、まだ設定する必要があります。 もう一度インターネットを検索してみたところ、ZadarmaなどのSIPプロバイダーに出会いましたが、その内線番号は無料です。 テストのために! 2つのアカウントを登録した後、コンピューターからスマートフォンに電話をかけようとしました。 呼び出しが通過しました。 そこで、すべてのパラメーターを正しく構成しました。 サイトにはアスタリスクに接続するための指示がありますが、 sip.confファイルに書き込む必要がある1行はありません



register => 111111:password@sip.zadarma.com/111111  111111- 
      
      





スマートフォンで101番の設定を登録した後、コンピューターから再度通話を開始しました。 十分にプレイし、アイデアの実行可能性を確認してから、VOIPゲートウェイの検索に取り掛かりました。 OLXで多数のオプションを試した後、私はまだ中国でゲートウェイを注文することにしました。 Linksys pap2tを注文した後、無料のクラシファイド広告の同じプラットフォーム上で、適切なGSMモデムの検索を開始しました。 最も一般的な音声サポートモデムは、私が購入したHuawei e1550でした。 ただし、その時点ではUSBハブがなかったため、モデムに挿入されたメモリカードにOpenWRTをインストールしようとしました。 残念ながら、失敗しました。 メモリカードは、ルートファイルシステムをマウントした後に初期化されました。 しかし、私はこれを試みることをあきらめず、ソースからOpenWRTを完全に再構築しようとすることさえ決めました(もし助けたらどうでしょうか?)。 夕方にさまざまなバージョンのOpenWRTをたゆみなくコンパイルすることで、メモリカードからモデムを起動しようとしましたが、まったく異なる結果が得られました。 OpenWRT 15でアスタリスク11が判明-動作します!!! ファームウェアとパッケージの両方が一緒にコンパイルされている場合。 それにもかかわらず、降伏後、USBハブを購入し、OpenWRTをUSBフラッシュドライブにインストールし、モデムを隣接ポートに挿入して、chan_dongleのセットアップを開始しました。 しかし、私はすでに自分でファームウェアをコンパイルしているため、chan_dongleはソースからビルドすることにしました。



中国からのゲートウェイを待っている間に、PBXから絞り出すことができるものを見つけることにしました。まず、発信者の番号から音声ファイルを生成するスクリプトをBashで作成し、次に2番目のZadarma番号から電話をかけると、このファイルが再生され、私が家にいなくても、家に電話してきた最後の人の番号を調べます。 また、初めてBashスクリプトを作成しましたが、その多くは私には明らかではありませんでした。 その結果、実験を行った後、低速のインターネットチャネルに接続し、Zadarma番号で自宅に電話をかけると、多くの番号を確認できませんでした。 はい、Bashスクリプトにはエラーがないわけではないので、ここには投稿しません。スクリプト呼び出しを理解しようとしていたときに、AGIのような素晴らしいことに出会ったとしか言えません。 PHP、Perl、またはCGIスクリプトをハンドラーとして使用できます。



スクリプトの作成と並行して、スマートフォンからさまざまなソフトフォンを使用して友人や知人に電話をかけました。 呼び出しルートは次のとおりでした:SoftFon(異なるSIPクライアント)=>アスタリスク=> GSMモデム=> GSM電話。 そして例外なく、誰もが私の声のひどい音質について私に話しましたが、私は誰もが完全に聞きました。 これにより、各チャネルで許可されたコーデックを登録する必要があったという事実に至りました。 G722コーデックを試してみたところ、ルーターの容量が音声をエンコードしてインターネットのメインゲートウェイとして機能するには明らかに不十分であることに気付きました。 したがって、アスタリスクの場合、別のルーターを購入することにしました。 ただし、G711コーデック(alaw / ulaw)は、音質が最も最適であることがわかりました。 声の質には明らかに不満がありましたが、私は彼らに立ち止まりました。



私にとっての次のステップは、通話の詳細と録音です。 これらのタスクは両方とも、アスタリスクの内部手段、1-CDR、2-MixMonitorによって解決できます。 CDR-呼び出しの詳細を提供し、CSVファイルからMySQLデータベースに記録できます。これをデータベースとして使用する予定です。 しかし、後に、MySQLはルーターにはあまりにも貪欲であると読んだので、SqLite3を選択しました。 これは私のcdr_sqlite3_custom.confファイルのようです



 table => cdr columns => calldate, clid, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags, accountcode, uniqueid, userfield, call_num, dist values => '${CDR(start)}','${CDR(clid)}','${CDR(dcontext)}','${CDR(channel)}','${CDR(dstchannel)}','${CDR(lastapp)}','${CDR(lastdata)}','${CDR(duration)}','${CDR(billsec)}','${CDR(disposition)}','${CDR(amaflags)}','${CDR(accountcode)}','${CDR(uniqueid)}','${CDR(userfield)}','${CDR(call_num)}','${CDR(dist)}'
      
      





そして、MixMonitorで呼び出しをラップして、呼び出しを録音しますが、録音はwavファイルに送られ、この形式は多くのスペースを必要とするため、ラメパッケージをインストールし、録音後にファイルをmp3に変換します。



その間、Linksys pap2tがすでに到着していたので、テスト用にスマートフォンではなく通常の固定電話を接続できました。 そして、このゲートウェイを介して呼び出したときに、発信音声の品質に関する問題がなくなったとき、私は驚きました。 つまり 対談者の話を聞いたのと同じように、すでに聞きました。



自動電話交換専用に割り当てられるルーターを探して(私はAliを探すことにしました)、 OYE-0001を選択しました。これは、MicroSDおよびOpenWRTカード用の組み込みカードリーダーがすぐに使えるためです。 注文した後、私は再びスクリプトを書くために座った。 スクリプトを書いている間、Huawei E1550モデムにはアストラルになる特性があり、これを完全にリセットするだけで助けになることがわかりました。 つまり モデムを引き出して取り付け直します。 (将来的に、提案された解決策はありますが、この問題はまだ解決されていません。)



中国のルーターを受け取った彼は、再び外部メディアにファームウェアをインストールしようとしましたが、今回はカードリーダーに挿入されたメモリカードにインストールしました。 ストックファームウェアでなんとかできましたが、OpenWRTリポジトリから必要なパッケージは動作しませんでした。 そのため、ファームウェアを自分でコンパイルしようとしました。 15番目のバージョンを正確に収集しようとしました。 しかし、MT7620プロセッサでそのようなルーターの異なるプリセットを試した後、私は絶えず何かを持っていますが、それは期待どおりに機能しませんでした。 しかし、経験が少ないため、問題を解決できませんでした。 しかし、OpenWRTの16番目(トランク、テスト)のバージョンは、すぐにルーターをサポートし、ダウンロードを急いだサイトにもファームウェアがあります。 そして、このファームウェアでは、私が念頭に置いていたすべてを行うことができました。 メモリカードにOpenWRTをインストールし、ネットワークを構成し、必要なパッケージをインストールします。 OpenWRTのトランクバージョンである16をインストールする場合、Luciパッケージは含まれません。 つまり Web GUI。 また、ネットワーク設定をコンソールから/ etc / config / networkファイルに入力する必要があります。



最終段階では、都市番号を接続します。



固定電話番号のプロバイダーとして、Intertelecomを選びました。 これは、SIPテレフォニーサービスを提供するCDMAオペレーターです。 私自身は、自宅のPBXを次のように見ました。インターテレコムの2-GSMモデムとSIPチャネル。 chan_dongleは、CDMAモデムの使用方法を知りませんでした。 しかし、再び情報を収集して、 chan_cdmaに出会いました 。 このライブラリにより、ZTE AC8710 CDMAモデムを使用できます。 このモデムを使用するためのモジュールを作成してくれたOleg Zhabkoに感謝します。 しかし、それはアスタリスク1.8で書かれており、11を使用していました。その後、広告の中で、35 UAHのZTE AC8700モデム(1 AC8710に1つ)に出会いました。 (これはボールです)。 したがって、私はこの実験に投資することにし、このモデムを購入しました。 彼は後でchan_cdmaがchan_dongleに基づいて書かれていることを発見しました。 そのため、モデムを11アスタリスクで動作させるには、プロジェクト間でコードの面倒なコピーアンドペーストが必要になります。 しかし、徹底的なコピーと貼り付けを行って、CDMAの作業を担当するセクションのみをchan_dongleプロジェクトに転送しましたが、コードの意味については掘り下げませんでした。 残念ながら、私は残念ながらモデムを動作させてオペレータに電話することに失敗しました。 それから私は努力をしなければならず、デバッグメッセージを絶えず挿入することでコードを掘り下げていきました。 コードにはコメントアウトされたデータをチェックする場所があり、それらの代わりにスタブ「if(1){...}」が挿入されていることに気付き始めました。 次に、ネットワーク上の登録をチェックするコードに到達し、それを「dれさせ」ました。 そして、「ああ、奇跡!」、私はオペレーターに電話をかけることができましたが、これらのチェックの目的がわからないので、モデムが返した「スキップ」番号に追加しました。







私はchan_cdmaライブラリに約2週間苦しみました。その間、Huawei-1201 CDMA端末に出会ったばかりで、楽観的なモデムの終わりを信じていませんでした。 それから、私は間違いなくワイヤーに依存しないことに決めました、光ケーブルも盗まれます。 そのため、「プランB」を編成することにしました。 FXOポートを備えたVoipゲートウェイを購入し、Huawei-1201を購入し、このポートに端末を設置すると、すべてがアスタリスクサーバーを通過します。 再びサイトの広告を見ましたが、 TP-Link TD-VG3631に出会いました 。 インターネットで説明を読んだ後、これがまさに私が必要とするものであることに気づきました。 2FXSポートおよび1 FXO。 はい、そして私の販売中の都市で、私はすぐに購入することにしました。 しかし、購入後、設定を調べてみると、非常にがっかりしました。 なぜなら まず、内部電話からのみ「FXO」を呼び出すことが可能でした。次に、このために「プレフィックス」を使用する必要がありました。 そして、これはすでに私のシステムの「松葉杖」です。なぜなら、 すると、電話は私のPBXを迂回し、自宅の全員が「今、あなたは追加の番号をダイヤルする必要がある」ことを覚えているわけではありません。 したがって、端末を購入することはありませんでした。 別の失望は、Tp-Link TD-VG3631が3桁より短いSIP番号を認識しなかったことです。 それ以前は、私の内線番号はそれぞれ11と22でした。 その時までに、Ukrtelecom回線はすでに修復されていたので、FXOポートへの着信コールをSIP番号にリダイレクトできるので、今のところTp-Link TD-VG3631を離れることにしました。



その時までに、私はすでに着信呼び出しを処理するためのAGIスクリプトを作成していました。その操作のアルゴリズムは次のとおりでした。 番号が初めて鳴っている場合は、どのような場合でも通話をスキップすることを確認し、電話帳に番号を書きます。電話帳にこの番号があり、ブラックリストにない場合は、電話を逃します。そうでない場合はリセットします。 電話帳データベースファイルを、/ var / log /アスタリスクの通話詳細ファイルと同じ場所に置くことにしました。 しかし、ここでも失望が待っていました。 再起動後、このフォルダーはクリアされます。 cdr_sqlite3_custom.cファイルのアスタリスクのソースで、master.dbファイルの場所へのパスを/ www /に変更する必要がありました。 また、res_agi.ipkパッケージはそのままでは機能せず、res_speech.soが機能する必要があります。 次に、このファイルをOpenWRTビルドフォルダーから/ var / lib / asterisk / modulesディレクトリーに手動でスリップしてみましたが、うまくいきました。



着信コールを処理するためのファイルの次の変更により、番号がチェックされ、それが私の2番目のい番号に対応する場合、最初に送信したのは最後の5つの着信のリストであり、それらが呼び出された時間で、それから内部番号へのコールがありました。 これが実際のコードそのものです。



in.php
 #!/usr/bin/php-cgi -q <?php class MyDB extends SQLite3 { function __construct($filename) { $this->path = "/www/"; $this->filename = $filename; if(!file_exists($this->path.$filename) && $filename == 'phonebook.db'){ $this->create_phonebook_db(); }else{ $this->open($this->path.$filename); } } public function doit($sql) { $result = $this->query($sql); $row = array(); $i=0; while($res = $result->fetchArray(SQLITE3_ASSOC)){ $row[$i] = $res; $i++; } return $row; } private function create_phonebook_db() { $this->open($this->path.'phonebook.db'); $sql="CREATE TABLE phonebook( id INTEGER PRIMARY KEY AUTOINCREMENT, phone_num TEXT, name TEXT, blacklist INTEGER, last_call DATATIME )"; $this->query($sql); $sql="CREATE TABLE sms( id INTEGER PRIMARY KEY AUTOINCREMENT, phone_num TEXT, sms_text TEXT, sms_time DATATIME )"; $this->query($sql); $sql="CREATE TABLE ussd( id INTEGER PRIMARY KEY AUTOINCREMENT, phone_num TEXT, sms_text TEXT, sms_time DATATIME )"; $this->query($sql); } } function show_date_from_base($date) { $time = strtotime($date); $time+=7200; return date('dmY  H:i:s',$time); } set_time_limit(0); require('phpagi.php'); #       AGI $agi = new AGI(); $db = new MyDB('phonebook.db'); $now = date('Ymd H:i:s'); $cid = $agi->request['agi_callerid']; if(substr($cid,0,1) == "+") $cid = substr($cid,1); // + if(strlen($cid) > 10 && substr($cid,0,3) == "380") $cid = substr($cid,2); // 380  0 $agi->set_variable("CDR(call_num)", $cid); if($cid == "XXXXXX"){ //Zadarma $db_cdr = new MyDB('master.db'); $sql="select * from cdr where call_num != 'sms_ussd' AND channel NOT LIKE '%ussd%' AND dist = 'in' GROUP BY call_num ORDER BY calldate DESC LIMIT 0,5"; $calls = $db_cdr->doit($sql); $agi->answer(); $agi->send_text("_____________\n"); $agi->send_text("_____________\n"); for($n = 0; $n < count($calls);$n++){ $agi->send_text($calls[$n]['call_num']."\n"); $agi->send_text(" ".show_date_from_base($calls[$n]['calldate'])."\n"); } $agi->wait_for_digit(10000); } $sql="select * from phonebook where phone_num = '".$cid."'"; $book = $db->doit($sql); if(count($book) == 0) { $agi->exec_dial("SIP/221&SIP/222&SIP/33"); #     $agi->hangup(); #   if(trim($cid)!=""){ $sql="insert into phonebook( phone_num, name, blacklist, last_call) VALUES ('".$cid."', '', '0', '".$now."')"; $db->exec($sql); } }else{ if($book[0]['blacklist'] == 0) { $agi->exec_dial("SIP/221&SIP/222&SIP/33"); #     $agi->hangup(); #   if(trim($cid)!=""){ $sql="UPDATE phonebook SET last_call = '".$now."' where phone_num = '".$cid."'"; $db->exec($sql); } }else{ $agi->hangup(); #   if(trim($cid)!=""){ $sql="UPDATE phonebook SET last_call = '".$now."' where phone_num = '".$cid."'"; $db->exec($sql); } } } ?>
      
      







extensions.conf
[グローバル]



RECDIR = / var /スプール/アスタリスク/モニター

SAVEMP3DIR = / www / light / monitor



[ドングル着信SMS]



exten => sms、1、Noop($ {CALLERID(num)} $ {BASE64_DECODE($ {SMS_BASE64})}-$ {SMS}からの着信SMS)

exten => sms、n、Set(CDR(call_num)= sms_ussd)

exten => sms、n、AGI(sms.php、$ {CALLERID(num)}、$ {SMS})

exten => sms、n、Hangup()



[ドングル着信-ussd]



exten => ussd、1、Noop(着信USSD:$ {BASE64_DECODE($ {USSD_BASE64})})

exten => ussd、n、Set(CDR(call_num)= sms_ussd)

exten => ussd、n、AGI(ussd.php、ussd、$ {USSD})

exten => ussd、n、ハングアップ()



[オールイン]



include => dongle-incoming-sms

include => dongle-incoming-ussd



exten => X.、1、Set(MON_FILE = $ {UNIQUEID}-$ {STRFTIME($ {EPOCH} ,,%Y-%m-%d-%H%M)}-$ {CALLERID(num)} -$ {CDR(dst)})

exten => _X。、2、Set(CDR(userfield)= $ {MON_FILE});

exten => _X。、3、Set(CDR(call_num)= $ {CALLERID(num)})

exten => _X。、4、Set(CDR(dist)= in)

exten => _X。、5、MixMonitor($ {MON_FILE} .wav)

exten => _X。、6、AGI(in.php); 内線番号宛

exten => _X。、7、ハングアップ()

exten => _X。、8、StopMixMonitor()



exten => + X.、1、Set(MON_FILE = $ {UNIQUEID}-$ {STRFTIME($ {EPOCH} ,,%Y-%m-%d-%H%M)}-$ {CALLERID(num) }-$ {CDR(dst)})

exten => _ + X.、2、Set(CDR(userfield)= $ {MON_FILE});

exten => _ + X.、3、Set(CDR(call_num)= $ {CALLERID(num)})

exten => _ + X.、4、Set(CDR(dist)= in)

exten => _ + X.、5、MixMonitor($ {MON_FILE} .wav)

exten => _ + X.、6、AGI(in.php); 内線番号宛

exten => _ + X.、7、Hangup()

exten => _ + X.、8、StopMixMonitor()



exten => h、1、System(/ usr / bin / lame -b 16 -silent $ {RECDIR} / $ {MON_FILE} .wav $ {SAVEMP3DIR} / $ {MON_FILE} .mp3> / var / log /アスタリスク/ wav_2_mp3.log)

exten => h、n、System(/ bin / rm -r $ {RECDIR} / $ {MON_FILE} .wav)



さて、統計を表示するために、呼び出しのために急いでWebインターフェイスを呼び出しました。 これは見た目です。 そして、それをフォルダ/ www / light /に入れます。



画像



github Webインターフェイス統計へのリンク



ZTE AC8700 / 8710 CDMAモデムをサポートするchan_dongle githubへのリンク。



OpenWRTの最新バージョンでコンパイルするためのMakefile(/package/feeds/telephony/asterisk-11.x-chan-dongleフォルダー内のネイティブMakefileを置き換える必要があります。すべてのパッチはそのままにしておきます)。



メイクファイル


#Copyright©2013 OpenWrt.org



#これは、GNU General Public License v2の下でライセンスされたフリーソフトウェアです。

#詳細については、/ライセンスを参照してください。





include $(TOPDIR)/rules.mk



PKG_NAME:=アスタリスク11-chan-dongle

PKG_VERSION:= 1.1r35

PKG_REV:= ff0a798b8f73b71af328c53862fd33ec5fe9ce85

PKG_RELEASE:= 6



PKG_SOURCE_SUBDIR:= asterisk11-chan-dongle-$(PKG_VERSION)

PKG_SOURCE:= $(PKG_SOURCE_SUBDIR).tar.gz

PKG_SOURCE_URL:= https://github.com/superl3n1n/asterisk-chan-cdma-gsm-dongle.git

PKG_SOURCE_PROTO:= git

PKG_SOURCE_VERSION:= $(PKG_REV)



PKG_BUILD_DIR = $(BUILD_DIR)/ $(PKG_SOURCE_SUBDIR)



PKG_FIXUP:= autoreconf



PKG_LICENSE:= GPL-2.0

PKG_LICENSE_FILES:= COPYRIGHT.txt LICENSE.txt

PKG_MAINTAINER:= Jiri Slachta <jiri@slachta.eu>



include $(INCLUDE_DIR)/package.mk



パッケージの定義/ asterisk11-chan-dongle

サブメニュー:=テレフォニー

セクション:= net

カテゴリー:=ネットワーク

URL:= https://code.google.com/p/asterisk-chan-dongle/

依存:=アスタリスク11 + libiconv-full + kmod-usb-acm + kmod-usb-serial + kmod-usb-serial-option + libusb-1.0 + usb-modeswitch

TITLE:= Huawei UMTS 3Gドングルのサポート

エンデフ



パッケージ/ asterisk11-chan-dongle / descriptionの定義

Huawei UMTS 3Gドングル用のアスタリスクチャネルドライバー。

エンデフ



MAKE_ARGS:= \

CC = "$(TARGET_CC)" \

LD = "$(TARGET_CC)" \

CFLAGS = "$(TARGET_CFLAGS)-DASTERISK_VERSION_NUM = 110000 -DLOW_MEMORY -D_GNU_SOURCE -D_XOPEN_SOURCE = 600 $(TARGET_CPPFLAGS)-I $(STAGING_DIR)/ usr / lib-include / lib-include / lib-lib / include / lib-libアスタリスク-11 / include -DHAVE_CONFIG_H -I。-fPIC "\

LDFLAGS = "$(TARGET_LDFLAGS)-L $(STAGING_DIR)/ usr / lib / libiconv-full / lib -liconv" \

DESTDIR = "$(PKG_INSTALL_DIR)/ usr / lib /アスタリスク/モジュール"



CONFIGURE_VARS + = \

ac_cv_type_size_t =はい\

ac_cv_type_ssize_t =はい



ビルドの定義/構成

$(呼び出し/ビルド/構成/デフォルト、\

--with-asterisk = $(STAGING_DIR)/ usr / include /アスタリスク-11 / include \

$(MAKE_ARGS)\



エンデフ



ビルドの定義/コンパイル

mkdir -p $(PKG_INSTALL_DIR)/ usr / lib /アスタリスク/モジュール

$(MAKE)-C "$(PKG_BUILD_DIR)" $(MAKE_ARGS)すべてのインストール

エンデフ



パッケージ/ asterisk11-chan-dongle / conffilesを定義します

/etc/asterisk/dongle.conf

エンデフ



パッケージの定義/ asterisk11-chan-dongle / install

$(INSTALL_DIR)$(1)/ etc /アスタリスク

$(INSTALL_DATA)$(PKG_BUILD_DIR)/etc/dongle.conf $(1)/ etc /アスタリスク/

$(INSTALL_DIR)$(1)/ usr / lib /アスタリスク/モジュール

$(INSTALL_BIN)$(PKG_INSTALL_DIR)/usr/lib/asterisk/modules/chan_dongle.so $(1)/ usr / lib /アスタリスク/ modules /

エンデフ



$(評価$(BuildPackage、アスタリスク11チャンドングルを呼び出す))




All Articles