如何使用基于浏览器的click2call使用pjsua模块

时间:2018-06-15 11:50:50

标签: python asterisk voip pjsip pjsua2

Python,PJSUA,AESTRISK

我正在尝试创建一个具有呼叫按钮的浏览器应用程序。通过单击呼叫按钮,我想使用我的voip配置连接到星号服务器并建立对所需移动用户的呼叫。

作为第一步,通过修改上述示例中给出的Mycallcallback功能,我可以使用此example从我的电脑拨打电话号码(到手机号码)

class MyCallCallback(pj.CallCallback):
    def __init__(self, call=None):
        pj.CallCallback.__init__(self, call)
    def on_state(self):
        if self.call.info().state == pj.CallState.CONFIRMED:
            print("Connected")
        if self.call.info().state == pj.CallState.DISCONNECTED:
            print("Disconnected")
    def on_media_state(self):
        self.call_slot = self.call.info().conf_slot
        if (self.call.info().media_state == pj.MediaState.ACTIVE) and (self.call_slot >= 0):
            # Connect the call to sound devices of my PC    
            lib.conf_connect(self.call_slot, 0)
            lib.conf_connect(0,self.call_slot)
            # enable sound devices (self, mic, speaker) 0 by default
            lib.set_snd_dev(0,0)

运行代码,我可以访问我的设备扬声器和麦克风,以便与我呼叫的用户(手机号码)进行通信。一切顺利,正常的电话交谈,我可以在不使用任何外部设备的情况下使用我的电脑。所以我虽然将其转换为api,以便我可以ping api以在移动用户和PC之间建立呼叫,这正在ping这个api。如果这有效,我想编码,以便点击浏览器上的按钮将ping这个api。

但是当我试图ping这个api时,呼叫已建立并且它不能访问它所从的PC的扬声器和麦克风。我可以理解,原因是它正在激活api正在运行的PC的麦克风和扬声器,而不是它正在ping的PC的麦克风和扬声器。

在这种情况下,如何修改或添加程序,以便当我ping api时,它在ping api和手机号码时在PC之间建立呼叫。

我见过另一个example,它正在访问记录器插槽和播放器插槽,但在我的情况下这没用。我尝试将客户端地址更改为ping PC IP地址,但它出现错误,无法在客户端和星号服务器之间建立传输Error: Object: Lib, operation=create_transport(), error=Cannot assign requested address

有关如何进行下一步的任何建议?

0 个答案:

没有答案