כיצד לבצע אתחול והרשאה בלקוח#
גרסת בטא
הפונקציונליות נמצאת בגרסת בטא. הפונקציות עשויות להשתנות ועלולות לפעול באופן לא יציב. ייתכן שבעתיד תיגבה תשלום נוסף עבור הפונקציונליות.
ניתן לבקש גישה לפונקציונליות דרך התמיכה הטכנית של 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, ולא בלקוח עצמו.
פרמטרי המופע#
לצורך העבודה יש להעביר שלושה ערכים:
idInstanceapiTokenInstanceapiUrl
קחו אותם מקונסולת 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;
});
לאחר מכן האובייקטים והמשתנים יחזרו למצבם ההתחלתי, והדף יפסיק לקבל אירועים על שיחות.