Здесь я сталкиваюсь с проблемой, как будто я могу позвонить, используя 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()
}