شما می توانید با ارسال ایمیل خود ، بصورت رایگان مشترک شده و از بروزسانی مطلع شوید.

ایمیل خود را وارد کنید:

 WebRTC چیست؟ یکی از تکنولوژی های بسیار مهم در دنیای مخابرات امروز WebRTC ست. با استفاده از این تکنولوژی، می توان در بستر وب و تنها با استفاده از مرورگر، ارتباطات صوتی و تصویری برقرار کرد؛ که این به معنی امکان برقراری ارتباط از طریق هر گجت (Gadget) بدون نیاز به نصب نرم افزار خاص [...]

یکی دیگر از ماژول های کاربردی مورد استفاده در FreePBX ماژول Boss Secretary می باشد که متاسفانه از نسخه ی ۱۲ دیگر بروزرسانی نشده اما به دلیل کاربرد زیاد آن برای مشتریان، در نهایت این ماژول توسط تیم فنی شرکت ساعیان ارتباط بهینه سازی و مشکلات آن مرتفع شده است. در ادامه به معرفی این [...]

یکی از مواردی که پس از نصب فری پی بی ایکس ( FreePBX ) برای کاربران بوجود می آید این است که ارتباط تجهیزاتی مانند گیت وی Gateway با استریسک، پس از دقایقی قطع می شود. در ادامه ابتدا به بررسی علت این مسئله و سپس راهکار آن می پردازیم. نحوه کار قابلیت Intrusion Detection [...]

یکی از سناریوهای رایج و متداولی که بسیاری از همکاران با آن سروکار دارند، ارتباط میان گیت وی های سنگوما Sangoma Vega Gateway و سرور ایزابل Issabel می باشد که در نتیجه ارتباط با شبکه مخابرات PSTN را میسر می نماید. در این مقاله قصد داریم برقراری این ارتباط را به زبانی ساده، آموزش دهیم. [...]

یکی از نیازمندی های اصلی در سیستم های تلفنی تغییر فایل های صوتی مربوط به اعلان های سیستم می باشد. همچنین ممکن است نیاز باشد تا در منوی صوتی از چند زبان مختلف پشتیبانی کنید. برای تغییر prompt های سیستم تلفنی استریسک و همچنین تعریف زبان های مختلف، روش های گوناگونی وجود دارد که ساده [...]

یکی از مباحثی که در راه اندازی شبکه های VoIP رایج است، برقراری ارتباط میان دو سرور تلفنی می باشد. به عنوان مثال دو سرور تلفنی را در نظر بگیرید که در دو مکان مجزا در حال سرویس دهی به کاربران خود می باشند و لازم است تا کاربران این دو سیستم نیز بتوانند با [...]

در FreePBX سه روش جهت راه اندازی فکس وجود دارد: ماژول تجاری Fax Pro، استفاده از اپلیکیشن های استریسک و سرور فکس Hylafax. هر یک از این روش ها ویژگی هایی دارند؛ ماژول Fax Pro قابلیت ارسال و دریافت فکس را برای کاربران از طریق UCP فراهم می کند. یعنی کاربران با ورود به محیط [...]

یکی از نیازمندی های اصلی در یک سیستم تلفنی، امکان ارسال و دریافت فکس می باشد. البته امروزه با توسعه بیش از پیش ابزار های ارتباطی همچون ایمیل، روش های سنتی مانند فکس کمتر مورد استفاده قرار می گیرند؛ ولی هنوز کاملا جایگزین نشده اند. بنابراین با بکارگیری سیستم های تلفنی مبتنی بر VoIP نیز [...]

صندوق صوتی از نیازمندی های مهم IP-PBX ها بوده و می تواند میزان سرویس دهی و همچنین در دسترس بودن را برای کاربران افزایش دهد. علاوه بر این، امکان ارسال پیام های صندوق صوتی از طریق ایمیل، این قابلیت را کاربردی تر می نماید. این قابلیت را در FreePBX می توانید به سادگی برای کابران [...]

در مقاله های قبلی نحوه ضبط پیام صوتی در  ماژول System Recording و بکارگیری آن در ساخت منوی صوتی شرح داده شد. علاوه بر این قابلیت، در برخی موارد نیاز است تا برای تماس گیرنده یک پیام صوتی خاص پخش شود و سپس به مقصد دیگری هدایت شود. به عنوان مثال اطلاع رسانی درباره یک [...]

اعلام کد اپراتوری به همراه سیستم نظر سنجی

یکی از قابلیت های موجود در Asterisk نوشتن AGI با استفاده از زبانهایی همانند: php, perl, Python و … می‌باشد. شما می‌توانید با کمک گیری از این زبان ها، مدیریت تماس را از Dialplan گرفته و با توجه به پردازشی که می‌خواهید روی داده‌ها داشته باشید، خیلی سریع‌تر هدف خود را پیاده سازی کنید.

راه اندازی سیستم نظر سنجی با استفاده از AGI:

در این سناریو می‌خواهیم یک سیستم نظر سنجی بر روی Elastix پیاده سازی کنیم به این صورت که شخص بعد از اتمام تماس خود با اپراتور می‌تواند منتظر بماند تا وارد منوی دیگری شده و در آنجا نظر خود را نسبت به پاسخ گویی اپراتور اعلام کند.

  • ابتدا یک صف بر روی الستیکس خود تعریف کرده.
  • برای اینکه بتوانیم تنظیماتی را که از طریق محیط وب الستیکس قابل تنظیم شدن نیستند را خود اضافه کنیم باید مراحل زیر را انجام دهیم.
    • ابتدا فایل etc/asterisk/queues_additional.conf/ را باز کرده و تمامی تنظیمات مربوط به صف خود را در فایل etc/asterisk/queues_custom.conf کپی کنید با این کار شما می توانید تنظیمات دلخواه خود را بر روی صف اعمال کنید.

تمامی فایل‌های elastix که در نام آنها additional وجود دارد مانند queues_additional.conf بعد از اعمال تغییرات در محیط وب تنظیمات جدید بر روی آنها نوشته می‌شود به همین دلیل اضافه کردن پارامترهای خود در این فایل بعد از انجام تغییرات جدید از بین خواهند رفت. برای همین باید تنظیمات خود را در فایلهایی که custom در آنها وجود دارد کپی کنید و سپس تغییرات خود را بر روی آن اعمال کنید.

برای دریافت اطلاعات بیشتر از لینک زیر استفاده کنید.

http://www.freepbx.org/configuration_files

  • سپس  در فایل etc/asterisk/queues_custom.conf/ مقدار setinterfacevar را برابر با yes قرار دهید با این کار قبل از تماس با اپراتور متغیر های زیر تعریف خواهند شد.

MEMBERINTERFACE, MEMBERNAME, MEMBERCALLS,  …

در واقع با داشتن این متغیر ها می‌توانیم تماس گیرنده را از داخلی اپراتور مطلع ساخت و قبل تماس شماره داخلی را برای تماس گیرنده پخش کرد.

  • تتظیمات مربوط به صف خود را می‌توانید با توجه به نیاز خود تغییر دهید در زیر یک نمونه ساده تهیه شده است

[۱۰۰۰]
announce-frequency=0
announce-holdtime=no
announce-position=no
autofill=no
eventmemberstatus=no
eventwhencalled=no
joinempty=yes
leavewhenempty=no
maxlen=0
periodic-announce-frequency=0
queue-callswaiting=silence/1
queue-thereare=silence/1
queue-youarenext=silence/1
reportholdtime=no
retry=5
ringinuse=yes
servicelevel=60
strategy=ringall
timeout=15
weight=0
wrapuptime=0
member=Local/100@from-queue/n,0,100,SIP/100
member=Local/200@from-queue/n,0,200,SIP/200
; add this field for getting MEMBERINTERFACE variable and others
setinterfacevar = yes

  •  سپس فایل etc/asterisk/extensions_additional.conf/ را باز کنید و context مربوط به صف خود را پیدا کرده و آن را در فایل etc/asterisk/extensions_override_elastix.conf/ کپی کنید و تغییرات زیر را که با قلم تو پر نوشته شده را اضافه کنید.

[ext-queues]
include => ext-queues-custom
exten => 1000,1,Macro(user-callerid,)
exten => 1000,n,Answer
exten => 1000,n,Set(__BLKVM_OVERRIDE=BLKVM/${EXTEN}/${CHANNEL})
exten => 1000,n,Set(__BLKVM_BASE=${EXTEN})
exten => 1000,n,Set(DB(${BLKVM_OVERRIDE})=TRUE)
exten => 1000,n,ExecIf($["${REGEX("(M[(]auto-blkvm[)])” ${DIAL_OPTIONS})}” != “1″]?Set(_DIAL_OPTIONS=${DIAL_OPTIONS}M(auto-blkvm)))
exten => 1000,n,Set(__NODEST=${EXTEN})
exten => 1000,n,Set(MONITOR_FILENAME=/var/spool/asterisk/monitor/q${EXTEN}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID})
;exten => 1000,n,Queue(1000,t,,) –> this is default “notice the comment at the beginning”
exten => 1000,n,Queue(1000,c,,,,queue.py) ; change some Arguments
exten => 1000,n,AGI(voting.py) ; and finally add this
exten => 1000,n,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})})
exten => 1000,n,Set(__NODEST=)
exten => 1000,n,Goto()
exten => 1000*,1,Macro(agent-add,1000,)
exten => 1000**,1,Macro(agent-del,1000)
exten => *451000,1,Set(QUEUENO=1000)
exten => *451000,n,Goto(app-queue-toggle,s,start)
exten => h,1,Macro(hangupcall,)

option c باعث می‌شود تا بعد از قطع کردن تماس توسط اپراتور، تماس گیرنده به کار خود ادامه داده و دستور های بعدی در Dialplan اجرا  شوند(در واقع exten h  در context  شما در نظر گرفته نمی‌شود).

queue.py نیز نام اسکریپتی است که به محض اتصال تماس با اپراتور اجرا خواهد شد.

voting.py نیز نام اسکریپتی است که بعد از قطع تماس توسط اپراتور اجرا خواهد شد.

  •  در مسیر var/lib/asterisk/agi-bin/ فایل queue.py را ایجاد کرده و به آن دسترسی اجرا شدن را بدهید.
chmod +x queue.py

این اسکریپت agi می‌تواند با هر زبان برنامه نویسی دیگری نوشته شود

محتویات فایل queue.py :

#!/usr/bin/env python

from asterisk import agi

agi = agi.AGI()

agi.answer()
member=agi.get_variable("MEMBERINTERFACE")

if member:
    agi.verbose("talk to -> %s" % member)
    if '@' in member:
        num = int(member.split("/")[1].split('@')[0])
        agi.appexec('Playback', 'the-operator')
        agi.say_number(num)
    else:
        num = int(member.split("/")[1])
        agi.appexec('Playback', 'the-operator')
        agi.say_number(num)

برای استفاده از این اسکریپت باید pyst را بر روی سیستم خود داشته باشید.

http://sourceforge.net/projects/pyst/

 در فایل بالا به محض برقراری ارتباط با اپراتور شماره اپراتور با تماس گیرنده اعلام می‌شود.

  • حال برای سیستم نظر سنجی فایل voting.py را با دسترسی اجرا ایجاد کرده و محتویات زیر را درون آن بگذارید توجه داشته باشید این اسکریپت بعد از قطع تماس توسط اپراتور اجرا می‌شود.

البته قبل از این کار یک database برای سیستم نظر سنجی خود ایجاد و یک table ساده همانند زیر را در آن ایجاد کنید

CREATE TABLE IF NOT EXISTS `vote` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `vote` enum('satisfied','unsatisfied') NOT NULL,
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;

محتویات فایل voting.py

#!/usr/bin/python

import MySQLdb
from asterisk import *

a = agi.AGI()

# Read(variable[,filename[&filename2[&...]][,maxdigits[,options[,attempts[,timeout]]]]])
a.appexec('Read', options='vote_variable,please-enter-your-vote, 1,,,10')
vote = int(a.get_variable('vote_variable'))

if vote == 1:
    vote_str = 'satisfied'
elif vote == 2:
    vote_str = 'unsatisfied'
else:
    vote_str = 'not valid'

a.verbose(vote_str)

if vote_str != 'not valid':
        con = MySQLdb.connect(host='localhost', db='voting', user='root', passwd='root')
        cur1 = con.cursor()
        cur1.execute('insert into vote (vote) value (%s)'% vote)

 

پایان

 

 

 

دیدگاه خود را به ما بگویید ناشناس