代码之家  ›  专栏  ›  技术社区  ›  Максим Чорнопольский

如何从拨号计划中自动将用户添加到confbridge asterisk?

  •  0
  • Максим Чорнопольский  · 技术社区  · 7 年前
    [play-context]
    exten => _X.,1,Answer()
    exten => _X.,n,NoOp('Exten:')
    exten => _X.,n,NoOp(${EXTEN})
    exten => _X.,n,ConfBridge(dconf-${EXTEN}-${STRFTIME(${EPOCH},,%d.%m.%Y-%H:%M:%S)})
    exten => _X.,n,Originate(SIP/5678,exten,conferences,100,1)
    
    [conferences]
    exten => _X.,1,NoOp(${EXTEN})
    exten => _X.,n,ConfBridge(dconf-${EXTEN}-${STRFTIME(${EPOCH},,%d.%m.%Y-%H:%M:%S)})
    

    当我创建一个新的confBridge会议时,我想加入一些用户。我怎么能自动完成呢?我尝试了这个配置,但它不起作用。在此行之前

    exten => _X.,n,Originate(SIP/5678,exten,conferences,100,1)
    

    只是达不到。我不明白为什么。 请帮忙。

    2 回复  |  直到 7 年前
        1
  •  1
  •   J.M. Robles    7 年前

    当涉及拨号计划中的Confbridge语句时,您的频道(您拨打会议号码时的音频)将进入会议。Confbridge的问题是,一旦dialplan到达Confbridge语句,您将一直留在那里,直到退出它。如果你想在那里找到一些朋友,你应该做一些以前的任务

    • 检查会议是否已建立(如果已经有其他参与方,请参阅函数CONFBRIDGE\u INFO),如果已建立,只需将自己添加到会议中即可
    • 如果没有,那么就设立一个会议,邀请你想要的人参加,并加入会议

    因此,会议计划通常不是微不足道的。假设您不想进行第一次检查。因此,在你建立会议时,你包括了一个人。为了简化并避免一些麻烦,我将为会议使用一个名称,该名称不取决于读取拨号计划的秒数(取决于您如何定义拨号计划您的会议可能不同于您邀请伴侣的会议),让我们假设会议的名称仅取决于所拨的分机。你应该做类似的事情:

    exten => _X,1,Answer()
    ...
    same => n,Originate(SIP/5678,app,ConfBridge,"${EXTEN},rest-of-parameters-for-5678")
    ... (Check ORIGINATE_STATUS if you do really need your friend)
    same => n,ConfBridge(${EXTEN},rest-of-parameters-for-youself)
    

    在这里,我使用了origin with the参数 应用程序 使用本地频道。但如果你这样做了,请小心分秒;)。

    如果要在星号启动时自动建立会议,请考虑在cli中包含一些ORIGINE语句。形态。

        2
  •  0
  •   arheops    7 年前

    当你这么做的时候

     Confbridge
    

    它现在在桥上,在你们离开桥之前,不要走下一个分机。

    因此,您必须在这之前发起,或者在其他线程中并行执行(通过本地通道)。