Asterisk Manager Interface یا همان AMI به شما این قابلیت را میدهد تا با استفاده از socket programming بتوانید به astersik، manager وصل شوید و با استفاده از قابلیتهای آن برای مدیریت، نظارت و کنترل asterisk خود استفاده کنید.
AMI به صورت Plain/text میباشد و با ارسال و دریافت بستهها کار میکند.
هر بسته شامل چند خط میباشد که با ‘r\n\’ از هم جدا میشوند و در نهایت هر بسته با یک خط خالی یا ‘r\n\’ از هم جدا میشوند.
به صورت پیش فرض AMI بر روی پورت ۵۰۳۸ TCP کار میکند.
شما میتوانید به این پورت بر روی سرور خود telnet بزنید.
[root@abdi ~]# telnet localhost 5038 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Asterisk Call Manager/1.2
به محض برقراری ارتباط asterisk متنی شبیه به Asterisk Call Manager/1.2 را برای شما ارسال میکند.
ارسال و دریافت بستهها بعد از انجام اهراز هویت انجام میشود.
-
Action : ارسال دستورات توسط کاربر ( فقط کاربر یا client میتوانید Action ارسال کند)
-
Response : هر Action حداقل یک Response دارد که در واقع نتیجه Action را نشان میدهد
-
Event : برای مطلع ساختن کاربر از event در حال اتفاق هست (مانند تماس ورودی به یک داخلی، خارج شدن یک عضو از صف و …)
خط اول بستههای ارسالی از سمت کاربر باید با Action شروع شود و از سمت سرور با Event یا Response.
تمامی بسته های AMI شامل: manager events, manager actions و manager action responses به یک روش ارسال میشوند
بسته های Event همیشه یک هدر Event دارند. هدر Event نام Event داده شده را میدهد در حالی که هدر Privilege لیستی از سطح دسترسی این Event را بر میگرداند
بسته های Action همیشه به همراه هدر Action میآید. هدر Action در واقع مشخص میکند کدام action میخواهد اجرا شود. بقیه هدر ها بستگی به Action ارسال شده دارد که بعضی از هدر ها الزامی میباشند(برای به دست آوردن هدر های متناظر با هر action دستور manager show command action را در کنسول asterisk خود وارد کنید).
Response به همراه هدر response میآید و نشان دهنده وضعیت دستور Action میباشد که میتواند Success یا Error میباشد
فرمت کلی ارسال بستههای Action به صورت زیر میباشد
Action: <action>
<key1>: <value1>
<key2>: <value2>
.
.
.
<keyN>: <valueN>
Variable: <name>=<value>
Variable: <name>=<value>
.
.
.
Variable: <name>=<value>
Action زیر که برای login میباشد به صورت زیر ارسال میشود
Action: login username: admin secret: admin
و Response دریافتی از سرور
Response: Success Message: Authentication accepted
Action های مختلف هر کدام کلیدها و متغیر های مخصوص خود را دارند لیست کامل آنها در مسیر زیر قرار دارد.
https://wiki.asterisk.org/wiki/display/AST/AMI+Actions
Event ها یا به صورت realtime هستند یعنی بدون ارسال Action میتوانید آنها را دریافت کنید مانند زیر که به محض Register شدن داخلی میتوانید آن را دریافت کنید. برای غبر فعال کردن این نوع Event ها میتوانید ازEvent ،Action استفاده کنید
Event: PeerStatus
Privilege: system,all
ChannelType: SIP
Peer: SIP/100
PeerStatus: Registered
Address: 192.168.1.138:5061
نوع دیگر Event به ازای Action های ارسالی شما فرستاده میشوند مانند وضعیت کانال های آنالوگ و وضعیت صفها.
action: Queuestatus Response: Success Message: Queue status will follow Event: QueueParams Queue: q-sample Max: 0 Strategy: ringall Calls: 0 Holdtime: 0 TalkTime: 0 Completed: 0 Abandoned: 0 ServiceLevel: 0 ServicelevelPerf: 0.0 Weight: 0 Event: QueueMember Queue: q-sample Name: SIP/100 Location: SIP/100 Membership: static Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 5 Paused: 0 Event: QueueStatusComplete
پایان