نمایش نتایج: از شماره 1 تا 5 از مجموع 5
سپاس ها 5سپاس
  • 4 توسط omid_mohagerani
  • 1 توسط omid_mohagerani

موضوع: کانال های محلی در استریسک ( Local Channels in Asterisk )

  
  1. #1
    نام حقيقي: امید مهاجرانی

    عضو عادی
    تاریخ عضویت
    Dec 2005
    محل سکونت
    Tehran
    نوشته
    782
    سپاسگزاری شده
    725
    سپاسگزاری کرده
    79

    کانال های محلی در استریسک ( Local Channels in Asterisk )

    چطور می تونم DialPlan ای تعریف کنم که یک برنامه جانبی را همزمان با dial کردن یک شماره اجرا کنم ؟
    چطور می تونم DialPlan ای طراحی کنم که داخلی شماره 2 بعد از 10 ثانیه شروع به زنگ خوردن کنه در حالی که داخلی شماره 1 هنوز داره زنگ می خوره ؟
    در یک پروژه نیاز بود تا کنترل برنامه ای که event های Asterisk را با استفاده از واسط AMI ( Asterisk Manager Interface ) مانیتور می کرد را به DialPlan منتقل کرد تا از آنجا بتونم اسکریپت AGI )َAsterisk Gateway Interface ) مورد نظرم در دایل پلن را اجرا کنم . با این تکنیک میشد از قدرت AGI در برنامه هایی که از AMI برای کنترل Asterisk استفاده می کنند ، بهره برد . شاید یک مثال مطلب را روشن تر کنه .
    شما یک دکمه را روی صفحه وبسایتون فرض کنید که وقتی اونو فشار می دید با شماره ای که جلوی آن نوشته شده تماس برقرار می کنه . این کارو میشه به راحتی با استفاده از AMI انجام داد ولی مثلا کنترل اینکه اگر اشغال بود چه کاری انچام شود را میشه با سپردن کنترل برنامه به DialPlan خود Asterisk با سادگی خیلی بیشتری انجام داد. انجام این عملیات با بهره گیری از قابلیت LocalChannels در Asterisk امکان پذیر است . در این مطلب ابتدا دو مثال ساده از به کارگیری LocalChannel ها در نوشتن DialPlan های حرفه ای را بیان می کنیم و بعد یک مثال از استفاده از LocalChannel ها در برقراری ارتباط بین AGI و AMI

    ------------------------------------------------------------

    چطور می تونم DialPlan ای تعریف کنم که یک برنامه جانبی را همزمان با dial کردن یک شماره اجرا کنم ؟
    [default]
    exten => 1234,1,Dial(SIP/100/followme@default)
    exten => followme,1,FollowMe(default)

    Dial می تونه چندین پارامتر بگیره که در این مثال ما به طور همزمان هم داخلی شماره 100 و هم بخشی از DialPlan که در واقع فرستادن به سوی FollowMe است را به صورت همزمان انجام میده .

    چطور می تونم DialPlan ای طراحی کنم که داخلی شماره 2 بعد از 10 ثانیه شروع به زنگ خوردن کنه در صورتی که داخلی شماره 1 هنوز داره زنگ می خوره ؟

    [default]

    exten => 1234,1,Dial(SIP/phone1&Local/call_phone2@default)
    exten => call_phone2,1,Wait(10)
    exten => call_phone2,n,Dial(SIP/phone2)

    و بالاخره سپردن کنترل برنامه از AMI به DialPlan استریسک و در صورت نیاز اجرای اسکریپت AGI مورد نظر :
    برای این کار از تابع Originate استفاده می کنیم ولی بجای Dial کردن یک شماره یا داخلی یک LocalChannel را Dial می کنیم و کنترل را به DialPlan در Asterisk پاس می دیم .

    OriginateAction dial = new OriginateAction();
    dial.setChannel("Local/DIAL@my_context");
    dial.setContext("my_context");
    dial.setExten("ANSWERED");
    dial.setPriority(1);
    dial.setAsync(true);
    dial.setCallerId("5555551212");
    dial.setVariable("dial_string","SIP/+15555551213@myprovider.com");

    که دایل پلن می تونه یک AGI را اجرا کنه و با توجه به وضعیت تماس تصمیم گیری کنه


    [my_context]

    exten => DIAL,1,Verbose(1,About to perform outdial)
    exten => DIAL,n,Dial(${dial_string},30)
    exten => DIAL,n,Agi(agi://127.0.0.1/MyAGI.agi?dial_result=${DIALSTATUS})
    exten => DIAL,n,Hangup()

    exten => ANSWERED,1,Answer()
    exten => ANSWERED,n,Agi(agi://127.0.0.1/MyAGI.agi?dial_result=ANSWER)
    exten => ANSWERED,n,Hangup
    دانلود نسخه PDF

    امید مهاجرانی
    omid dot mohajerani at gmail dot com
    Notes On Computer Networks




    موضوعات مشابه:
    SADEGH65، bpco، th95 و 1 نفر دیگر سپاسگزاری کرده‌اند.

  2. #2
    نام حقيقي: ایمان قربانعلی

    خواننده شناسه تصویری Iman.gh
    تاریخ عضویت
    Jul 2005
    محل سکونت
    Iran - Tehran
    نوشته
    832
    سپاسگزاری شده
    305
    سپاسگزاری کرده
    177
    سلام

    می دونم این موضوع قدیمی هستش ولی 1 سوال داشتم.

    من متن زیر را در extensions_custom.conf نوشتم تا بعد گرفتن 0923* سرویس httpd از کار بیفته ولی نمی شه



    [from-internal-custom]
    exten => 1234,1,Playback(demo-congrats) ; extensions can dial 1234
    exten => 1234,2,Hangup()
    exten => h,1,Hangup()
    include => iman
    include => agentlogin
    include => conferences
    include => calendar-event
    include => weather-wakeup




    [iman]
    exten => *0923,1,Answer
    exten => *0923,2,Wait
    exten => *0923,3,System(service httpd stop)
    exten => *0923,4,Hangup



    بزرگ بیندیشید تا بزرگ شوید !

  3. #3
    نام حقيقي: امید مهاجرانی

    عضو عادی
    تاریخ عضویت
    Dec 2005
    محل سکونت
    Tehran
    نوشته
    782
    سپاسگزاری شده
    725
    سپاسگزاری کرده
    79
    نقل قول نوشته اصلی توسط Iman.gh نمایش پست ها
    سلام

    می دونم این موضوع قدیمی هستش ولی 1 سوال داشتم.

    من متن زیر را در extensions_custom.conf نوشتم تا بعد گرفتن 0923* سرویس httpd از کار بیفته ولی نمی شه



    [from-internal-custom]
    exten => 1234,1,Playback(demo-congrats) ; extensions can dial 1234
    exten => 1234,2,Hangup()
    exten => h,1,Hangup()
    include => iman
    include => agentlogin
    include => conferences
    include => calendar-event
    include => weather-wakeup




    [iman]
    exten => *0923,1,Answer
    exten => *0923,2,Wait
    exten => *0923,3,System(service httpd stop)
    exten => *0923,4,Hangup
    این سوال شما ربطی به کانال های محلی نداره . بهتر بود در یک سوال جدید مطرح می کردید .
    در مورد syntax ای هم که استفاده کردید شما باید Log را چک کنید . معمولا کاربر استریسک شما دسترسی برای کنترل سرویس ها را نداره . و Deamon شما داره با دستری Asterisk اجرا میشه .


    SADEGH65 سپاسگزاری کرده است.

  4. #4
    نام حقيقي: ایمان قربانعلی

    خواننده شناسه تصویری Iman.gh
    تاریخ عضویت
    Jul 2005
    محل سکونت
    Iran - Tehran
    نوشته
    832
    سپاسگزاری شده
    305
    سپاسگزاری کرده
    177
    سلام

    Using SIP RTP TOS bits 184
    == Using SIP RTP CoS mark 5
    -- Executing [25000@from-internal:1] Answer("SIP/1000-00000001", "") in new stack
    -- Executing [25000@from-internal:2] System("SIP/1000-00000001", "service httpd stop") in new stack
    -- Remote UNIX connection
    -- Remote UNIX connection disconnected
    -- Executing [25000@from-internal:3] Hangup("SIP/1000-00000001", "") in new stack
    == Spawn extension (from-internal, 25000, 3) exited non-zero on 'SIP/1000-00000001'
    -- Executing [h@from-internal:1] Macro("SIP/1000-00000001", "hangupcall") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("SIP/1000-00000001", "1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,4)
    -- Executing [s@macro-hangupcall:4] GotoIf("SIP/1000-00000001", "1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,7)
    -- Executing [s@macro-hangupcall:7] GotoIf("SIP/1000-00000001", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s@macro-hangupcall:9] Hangup("SIP/1000-00000001", "") in new stack
    == Spawn extension (macro-hangupcall, s, 9) exited non-zero on 'SIP/1000-00000001' in macro 'hangupcall


    بزرگ بیندیشید تا بزرگ شوید !

  5. #5
    نام حقيقي: ایمان قربانعلی

    خواننده شناسه تصویری Iman.gh
    تاریخ عضویت
    Jul 2005
    محل سکونت
    Iran - Tehran
    نوشته
    832
    سپاسگزاری شده
    305
    سپاسگزاری کرده
    177
    سلام
    چه نوع دسترسی باید به اون بدم ؟


    بزرگ بیندیشید تا بزرگ شوید !

کلمات کلیدی در جستجوها:

http://forum.persiannetworks.com/f99/t36315.html

استریسک

انجام پروژه های asterix

asterisk با اینترفیس

اتصال به Manager استریسک (Asterisk Manager Interface)

اسکریپت های استریسک

برچسب برای این موضوع

مجوز های ارسال و ویرایش

  • شما نمی توانید موضوع جدید ارسال کنید
  • شما نمی توانید به پست ها پاسخ دهید
  • شما نمی توانید فایل پیوست ضمیمه کنید
  • شما نمی توانید پست های خود را ویرایش کنید
  •