как получить входящий звонок, используя веб-телефон в PSTN JS-SDK - PullRequest
0 голосов
/ 08 марта 2019

Здесь я сталкиваюсь с проблемой, как будто я могу позвонить, используя sinch JS-SDK PSTN.

Пример, но:
1) Я не могу получить входящий звонок, пока пользователь звонитsinch number
2) я попробовал другой способ, используя API обратного вызова для получения входящего вызова, здесь я получаю входящий вызов, но я не могу позвонить на номер телефона , но я могу звонить, используя имя пользователя () метод означает, что он отлично работает в межсетевых вызовах.

главная проблема сейчас если добавить URL-адрес обратного вызова в инструментальной панели sinch-app он не позволяет совершать вызов по телефонному номеру с использованием callphonenumber() метод если я удалил URL обратного вызова из sinch dashboard , тогда он будет работать, я не понял почему?Это проблема Sinch или что?

Как установить URL обратного вызова для получения входящего вызова с использованием SINCH JS-SDK?

Пожалуйста, помогите мне решить эту проблему!

мой код

    constructor(private _leadService: LeadService, private el: ElementRef, private renderedOb: Renderer2, private location: Location, private _router: Router, private _userService: UserService, private route: ActivatedRoute, private fb: FormBuilder) {
        this.sinchClient = new SinchClient({
            applicationKey: 'apk key',
            capabilities: { calling: true },
            supportActiveConnection: true,
            startActiveConnection: true,
            onLogMessage: function (message) {
                console.log(message);
            },

        });
        //start sinch-client to iniatiate call

this.sinchClient.start({ username: 'prashanth@zibtek.in', password: '123456' })
            .then(function () {
                // Perform actions to do when authenticated, such as displaying user interface
            });

    }


    ngOnInit() {
        this.callForm = this.fb.group({
            To: ['', Validators.required],
            code: ['', Validators.required]
        });

        var callClient = this.sinchClient.getCallClient();
        callClient.initStream().then(function () {
        });

    }


    ngAfterViewInit() {
        this.audioProgress = document.createElement('audio');
        this.audioIncoming = document.createElement('audio');
        this.audioRingTone = document.createElement('audio');


        //Listen call events os sinch
        this.callListeners = {
            onCallProgressing: (call) => {
                this.iscallstatus = false;
                this.callingStatus = "Ringing....";
                this.audioProgress.src = 'assets/sounds/ringback.wav';
                this.audioProgress.loop = true;
                this.audioProgress.play();

            },
            onCallEstablished: (call) => {
                this.isTimer = true;
                this.StartTimer()
                this.callingStatus = "Connected ...";
                this.audioIncoming.srcObject = call.incomingStream;
                this.audioIncoming.play();
                this.audioProgress.pause();

                //Report call status
                const callDetails = call.getDetails();
                const callAnswer = (callDetails.establishedTime && new Date(callDetails.establishedTime))
                console.log('Answer at:', callAnswer)
                console.log(callDetails)
            },
            onCallEnded: (call) => {
                this.callingStatus = "Ended ...";
                this.audioProgress.pause();
                this.audioIncoming.srcObject = null;
                localStorage.removeItem('callno');
                this.isphoneCallPopup = true;
                this.iscallinput = true;



                //Report call details
                this.callDetails = call.getDetails();
                this.endedtime = new Date(this.callDetails.endedTime);
                this.callduration = this.callDetails.duration;
                this.CallEstablishedtime = new Date(this.callDetails.establishedTime);
                this.callendcause = call.getEndCause()
                this.startedtime = new Date(this.callDetails.startedTime);

                //details of phone-call
                this.callData = {
                    To: this.callForm.value.To,
                    leadId: this.leadid,
                    endedTime: new Date(this.callDetails.endedTime),
                    callduration: this.callDetails.duration,
                    CallEstablishedtime: new Date(this.callDetails.establishedTime),
                    callendcause: call.getEndCause(),
                    startedtime: new Date(this.callDetails.startedTime)
                }

                this._leadService.makeCall(this.callData).subscribe((data) => {
                    //console.log("calldetailsform value", data);
                })

                if (call.error) {
                    let errormessage = call.error.message;
                    console.log(errormessage)
                }
            },


        }

        // receive incoming call

        this.callClient = this.sinchClient.getCallClient();
        this.callClient.initStream().then(() => {
        });
        this.callClient.addEventListener({
            onIncomingCall: (incomingCall: any) => {
                //Play some groovy tunes 
                this.callingStatus = "Ringing....";
                this.audioRingTone.src = 'assets/sounds/phone_ring.wav';
                this.audioRingTone.loop = true;
                this.audioRingTone.play();
                console.log('incomingCall', incomingCall);
                incomingCall.addEventListener(this.callListeners);
            }

        })
        //end of receiving call


    }

    //  start calling
    onCalling(number: any) {
        this.callClient = this.sinchClient.getCallClient();
        this.callClient.initStream().then(function (data) {
        });
        this.call = this.callClient.callPhoneNumber(number);
        this.call.addEventListener(this.callListeners);
    }
    async callNum(number: any, code: any) {
        localStorage.getItem('callno');
        var callingNumber = code + "" + number;
        await this.onCalling(callingNumber);
        this.iscallinput = true;
    }
    //end of calling method


    //mute or unmute 
    onMute() {
        this.isMicof = true;
        this.isMicon = false;
        this.call.mute();
    }

    onUnMute() {
        this.isMicof = false;
        this.isMicon = true;
        this.call.unmute();
    }

    // hangup the call
    callhangup() {
        this.iscallinput = false;
        this.call & this.call.hangup();

    }

    callAnswer() {
        this.call.answer()
    }
...