Skip to main content

Дуудлага хийх

  • RTC-Web SDK, Socket.IO ашигласан жишээ код:

Гарах дуудлага

1. Дуудлага эхлүүлэх

Socket.IO серверт холбогдож, доорх мэдээллийг явуулна.

Socket.IO серверт холбогдох заавар



destination: Холбох утасны дугаар
fromNumber: Хэрэглэгчийн утасны дугаар
fromName: Хэрэглэгчийн нэр
roomId: Дуудлагын сигнал дамжуулах өрөөний нэр ( click.tenantName.outbound.callId )
video: Видео дуудлага эсэх


import { io } from "socket.io-client";
import { v4 as uuid4 } from "uuid";

// Socket серверт холбогдох, socket_url-г хариуцсан борлуулалтай ажилтантай холбогдож авна.
const socket = io("${socket_url}");

try {
// Дуудлагуудын мэдээлэл болон signaling өрөөний ID хүлээж авах өрөө
const masterRoom = "click.master.outbound";

// Тухайн дуудлагын signaling өрөө
const callRoom = `click.${tenantName}.outbound.${uuidv4()}`;

// Дуудлагын өгөгдөл бэлдэх
const callData = {
destination: `${phoneNumber}`,
fromNumber: fromNumber,
fromName: fromName,
video: "false",
roomId: callRoom,
callType: "audio"
}

// Master өрөө-рүү орох
socket.current.emit("joinRoom", {room: masterRoom, username: fromName});

// Master өрөө-рүү дуудлага хийх мэдээлэл болон тухайн дуудлагын signaling өрөөний ID дамжуулах
socket.current.emit("sendMessage", {room: masterRoom, username: fromName, message: JSON.stringify(callData)});

// Тухайн дуудлагын signaling өрөө-рүү орох
socket.current.emit("joinRoom", {room: callRoom, username: fromName });

} catch (error) {
console.log("Connection error: ", error);
}

2. RTC серверт холбогдох

Эхний алхам дээр үүсгэсэн Socket өрөөнд CallPro Socket серверээс дуудлагын мэдээлэл илгээнэ. Дуудлагын мэдээллийг ашиглан RTC серверт холбогдоно.

RTC серверт холбогдох заавар



  • appId: Rtc-н өрөөнд нэвтрэхэд ашиглах appId
  • rtcToken: Rtc-н өрөөнд нэвтрэхэд ашиглах token
  • serverUrl: Rtc-н өрөөнд нэвтрэхэд ашиглах серверийн хаяг
  • userId: Rtc-н өрөөнд нэвтрэхэд ашиглах хэрэглэгчийн ID
  • video: Видео дуудлага эсэх
  • method: Сигналын төрөл

{
"data": {
"appId": "sNxxxxxxxxxxxxSwxxx3Jg",
"roomId": "sNxxxxxxxxxxxxSwxxx3Jg_0edb1ee7-4712-4860-9fca-72d13c1b4e23",
"rtcToken": "001eJxTYFj64YbyR/s9K3TPvvE7Km9htPbmUSnnX9078rvS/tS75C0UY0edb1ee7471248609fca72d13c1b4e23IslXYCPgeFOyB5WR0edb1ee7471248609fca72d13c1b4e23wszA13LtOREXXOjFEPjZMMkk1QjYw4GSygAAGVLMZ0=",
"serverUrl": "wss://xxx/",
"userId": "sNxxxxxxxxxxxxSwxxx3Jg_0edb1ee7-4712-4860-9fca-72d13c1b4e23_99999999",
"video": "false",
"method": "call_init"
},
"message": {
"reason": "connected"
},
"status": "success"
}


- error: Алдаа - message: Алдааны мессеж - reason: Алдааны шалтгаан - reason: Алдааны тайлбар - status: Алдаа


{
"data": null,
"message": {
"reason": "number_not_found",
"text": "Дугаар олдсонгүй"
},
"status": "error",
}

3. Сигнал хүлээн авах

Эхний алхам дээр үүсгэсэн Socket.IO өрөөнд дамжуулан дуудаж буй, дуудлага таслах зэрэг сигнал хүлээн авна.

  • method: Сигналын төрөл ( calling, ringing, answered, hangup, busy )
  • calling: Холбогдож байна.
  • ringing: Дуудаж байна.
  • answered: Хэрэглэгч дуудлагыг хүлээн авсан.
  • hangup: Хэрэглэгч дуудлагыг тасалсан.
  • busy: Хэрэглэгч завгүй байна.

{
"data": {
"method": "calling"
},
"message": {
"reason": null,
"text": "Холбогдож байна"
},
"status": "success"
}

4. Сигнал илгээх

Эхний алхам дээр үүсгэсэн Socket.IO өрөөнд дамжуулан дуудлага таслах сигнал илгээх боломжтой.

  • method: Сигналын төрөл ( hangup, busy )
  • hangup: Дуудлага таслах.

{
"method": "hangup"
}

Орох дуудлага

1. Бусад хэрэглэгчээс дуудлага ирэх

CallPro Socket.IO серверт холбогдон click.[tenantName].inbound socket.io өрөө-c дараах мэдээллийг хүлээн авч, RTC серверт холбогдоно.

Socket.IO серверт холбогдох заавар



RTC серверт холбогдох заавар



  • appId: Rtc-н өрөөнд нэвтрэхэд ашиглах appId
  • rtcToken: Rtc-н өрөөнд нэвтрэхэд ашиглах token
  • serverUrl: Rtc-н өрөөнд нэвтрэхэд ашиглах серверийн хаяг
  • userId: Rtc-н өрөөнд нэвтрэхэд ашиглах хэрэглэгчийн ID
  • video: Видео дуудлага эсэх
  • method: Сигналын төрөл

{
"data": {
"appId": "sNxxxxxxxxxxxxSwxxx3Jg",
"roomId": "sNxxxxxxxxxxxxSwxxx3Jg_0edb1ee7-4712-4860-9fca-72d13c1b4e23",
"rtcToken": "001eJxTYFj64YbyR/s9K3TPvvE7Km9htPbmUSnnX9078rvS/tS75C0UY0edb1ee7471248609fca72d13c1b4e23IslXYCPgeFOyB5WR0edb1ee7471248609fca72d13c1b4e23wszA13LtOREXXOjFEPjZMMkk1QjYw4GSygAAGVLMZ0=",
"serverUrl": "wss://xxx/",
"userId": "sNxxxxxxxxxxxxSwxxx3Jg_0edb1ee7-4712-4860-9fca-72d13c1b4e23_99999999",
"video": "false",
},
"message": {
"reason": "connected"
},
"status": "success"
}

2. Сигнал хүлээн авах

Эхний алхам дээр серверээс ирсэн roomId-р дамжуулан дуудлага таслах сигнал хүлээн авна.

  • method: Сигналын төрөл ( hangup, busy )
  • hangup: Хэрэглэгч дуудлагыг тасалсан.

{
"data": {
"method": "hangup"
},
"message": {
"reason": null,
"text": "Хүлээн авагч тасаллаа"
},
"status": "success"
}

3. Сигнал илгээх

Эхний алхам дээр серверээс ирсэн roomId-р дамжуулан дуудаж буй, дуудлага таслах зэрэг сигнал илгээх боломжтой.

  • method: Сигналын төрөл ( calling, ringing, answered, hangup, busy )
  • calling: Хэрэглэгч холбогдож байна.
  • ringing: Дуудаж байна.
  • answered: Хэрэглэгч дуудлагыг хүлээн авсан.
  • hangup: Хэрэглэгч дуудлагыг тасалсан.
  • busy: Хэрэглэгч завгүй байна.

{
"method": "calling"
}