Skip to content

כיצד לבצע אתחול והרשאה בלקוח#

גרסת בטא

הפונקציונליות נמצאת בגרסת בטא. הפונקציות עשויות להשתנות ועלולות לפעול באופן לא יציב. ייתכן שבעתיד תיגבה תשלום נוסף עבור הפונקציונליות.
ניתן לבקש גישה לפונקציונליות דרך התמיכה הטכנית של GREEN-API

הספרייה מורכבת משני חלקים:

  • GreenApiVoipClient — מעטפת לשיטות ה-REST: חיוג למספר, קבלה, דחייה וסיום של שיחה;
  • CallsConnection — מוחזר על ידי השיטה connectCalls(). זהו חיבור WebSocket: הוא מדווח על מצב השיחה, מודיע על שיחות נכנסות ומעביר שמע ב-WebRTC.

פרטי הגישה מועברים לבנאי (constructor) של הלקוח, ואין בספרייה שלב כניסה נפרד. המופע עצמו חייב להיות כבר מורשה בקונסולה באמצעות קוד QR — הספרייה מטפלת בשיחות בלבד.

יצירת הלקוח והחיבור#

נוסיף נקודת כניסה לאינטגרציה בקובץ ה-JavaScript ‏main.js (או main.ts, אם אתם משתמשים ב-TypeScript).

import { GreenApiVoipClient } from '@green-api/whatsapp-api-calls-client-js';

const client = new GreenApiVoipClient({
  idInstance: 'your-id-instance',
  apiTokenInstance: 'your-api-token-instance',
  apiUrl: 'your-api-url', // API URL of your instance, for example https://1234.api.green-api.com
});

// Open the calls connection. It reconnects automatically, and the current call state
// arrives right after connecting and on every change.
const calls = client.connectCalls();

calls.addEventListener('connect', () => console.log('Calls connection established.'));
calls.addEventListener('disconnect', (event) => console.log('Connection lost:', event.detail.reason));
calls.addEventListener('error', (event) => console.error('Calls error:', event.detail.message));

שימו לב: ההרשמה לאירועים מתבצעת בחיבור calls, ולא בלקוח עצמו.

פרמטרי המופע#

לצורך העבודה יש להעביר שלושה ערכים:

  • idInstance
  • apiTokenInstance
  • apiUrl

קחו אותם מקונסולת GREEN-API שלכם, לאחר בחירת המופע המורשה הרצוי.

בתור apiUrl ציינו את כתובת ה-API של המופע שלכם — לדוגמה, https://1234.api.green-api.com. זו אותה כתובת שבה אתם פונים לשיטות ה-REST של המופע.

דוגמה עם טופס אינטרנט#

בדוגמה ב-JavaScript ללא framework, אותם נתונים מוזנים בטופס בדף, והלקוח נוצר בלחיצה על כפתור.

    <section>
      <p>Initialization</p>
      <input id="apiUrl" placeholder="apiUrl">
      <input id="idInstance" placeholder="instance id">
      <input id="apiTokenInstance" placeholder="instance api token">
      <button id="connectButton">connect</button>
      <button id="disconnectButton" disabled>disconnect</button>
    </section>

    <section style="margin-top: 16px;">
      <p>Outgoing call</p>
      <input id="phoneNumber" placeholder="phone number" disabled>
      <button id="startCallButton" disabled>start call</button>
    </section>

    <section>
      <p>Current call</p>
      <button id="endCallButton" disabled>end call</button>
    </section>
const connectButton = document.getElementById('connectButton');
const disconnectButton = document.getElementById('disconnectButton');
const startCallButton = document.getElementById('startCallButton');
const endCallButton = document.getElementById('endCallButton');
const phoneNumberInput = document.getElementById('phoneNumber');

let client = null;
let calls = null;

connectButton.addEventListener('click', () => {
  client = new GreenApiVoipClient({
    idInstance: document.getElementById('idInstance').value,
    apiTokenInstance: document.getElementById('apiTokenInstance').value,
    apiUrl: document.getElementById('apiUrl').value,
  });

  calls = client.connectCalls();

  calls.addEventListener('connect', () => console.log('Calls connection established.'));
  calls.addEventListener('disconnect', (event) => console.log('Connection lost:', event.detail.reason));
  calls.addEventListener('error', (event) => console.error('Calls error:', event.detail.message));

  phoneNumberInput.disabled = false;
  startCallButton.disabled = false;
  disconnectButton.disabled = false;
  connectButton.disabled = true;
  endCallButton.disabled = false;
});

במצב זה הלקוח מוכן לבצע ולקבל שיחות.

סגירת החיבור#

כאשר השיחות אינן נדרשות עוד, קראו ל-calls.close(): השיטה תעצור את העברת השמע ותסגור את ה-WebSocket.

disconnectButton.addEventListener('click', () => {
  calls.close();
  calls = null;
  client = null;

  phoneNumberInput.disabled = true;
  startCallButton.disabled = true;
  disconnectButton.disabled = true;
  connectButton.disabled = false;
  endCallButton.disabled = true;
});

לאחר מכן האובייקטים והמשתנים יחזרו למצבם ההתחלתי, והדף יפסיק לקבל אירועים על שיחות.