AMI Asterisk Manager Интерфейс Инициировать Действие - PullRequest
1 голос
/ 28 октября 2011

В настоящее время я создаю оболочку C # .NET для Asterisk Interface Manager.

Я могу делать простые вещи, такие как переводы и зависания.Сейчас я нахожусь в процессе построения конференц-связи.Я могу настроить n-пользовательскую конференцию, но я должен сделать это в терминах «Действие: перенаправление» на существующие активные каналы.

То, что я хотел бы сделать, - это маршрутизировать как существующие несуществующие вызовы(т. е. в «основных каналах шоу» нет канала для моего контекста / расширения, которое помещает людей в конференц-залы.

Но я не могу заставить «Действие: создать» работать на что-либо.Что источник берет канал в качестве аргумента, когда еще нет канала?Что вы передаете в заголовок канала?SIP / у меня не работает.

Заранее спасибо.

1 Ответ

3 голосов
/ 29 октября 2011

Что точно вы пытаетесь сделать?Вы не можете использовать несуществующий канал для входа в конференц-зал.Если вы хотите создать конференцию, попросите людей позвонить по своим добавочным номерам (или даже по любому номеру) и поместить в конференц-зал, это просто.

Я предполагаю, что вы используете Asterisk.NET,Команда originate ожидает набора номера (это канал), контекста и добавочного номера для подключения вызова в пределах абонентской группы (это может быть жестко задано или предположительно может быть создано с помощью AMI).

Допустим, вы создали конференц-зал на добавочном номере 300. Ваша исходная команда будет выглядеть примерно так:

OriginateAction oc = new OriginateAction();
oc.Context = "YourDialPlanContext";
oc.Priority = 1;

// Channel is however you're dialing (extensions, SIP, DAHDI, etc.)
oc.Channel = "SIP/12125551212@Your-Sip-Prover-Peer-Name"; 
// or in the alternative
// oc.Channel = "ZAP/ZapChannelName/12125551212";

oc.CallerId = "9998887777";

// This is the extension you want dialed once the call is connected
// 300 in our example
oc.Exten = "300";
oc.Timeout = 60000;               // Our timeout in ms
oc.Variable = "VAR1=ABC|VAR2=25"; // If you need to pass variables to the dialplan

// Async should be set to true, unless you want your code to wait until the call
// is complete
oc.Async = true;         

// Go ahead and place the call
ManagerResponse originateResponse = AsteriskManager.SendAction(oc, oc.Timeout);

Вуаля!Теперь вы отправили вызов предполагаемому участнику конференции, и после ответа он будет направлен в ваш конференц-зал.

...