واجهة برمجة تطبيقات التكامل العام لـ WhatsApp Cloud | Woztell

واجهة برمجة التطبيقات العامة لتكامل واتساب السحابي - WOZTELL

مقدمة

تُتيح لك واجهة برمجة التطبيقات العامة الاستعلام عن بعض المعلومات من تكامل WhatsApp Cloud الخاص بك، أو تنفيذ إجراءات معينة دون الحاجة لاستخدام واجهة المنصة.

نقطة نهاية API

يرجى استخدام عنوان URL التالي لنقطة نهاية API العامة:
https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/api/


ملاحظة

على سبيل المثال، نقطة النهاية لـ PUT /whatsapp-message-template:
https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/api/whatsapp-message-template

المصادقة

رمز وصول WhatsApp Cloud

ملاحظة

يمكن استخدام رمز الوصول من قناة WhatsApp Cloud مع واجهات API العامة باستثناء GET /conversation-analytics وواجهات التشفير وواجهات Flow.

  1. في "الإعدادات" ← "القنوات"، انقر على "تحرير" للدخول إلى قناة WhatsApp Cloud المعنية.
  1. في "المنصة"، توجه إلى "الوصول المتقدم".
  1. انقر على "توليد" لإنشاء رمز الوصول.
  1. تم إنشاء رمز الوصول. يمكنك إدارة الرموز الحالية في القسم أدناه.
  1. يجب تمرير رمز الوصول كـ accessToken في معلمة الاستعلام، على سبيل المثال:
curl --location --request GET 'https://api.whatsapp-cloud.woztell.sanuker.com/v1.1/api/whatsapp-message-templates?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}&first=10'
        

المحتوى المشفر والسياق الموقّع

فكرة
ملاحظة

يمكن استخدام طريقة المصادقة هذه فقط مع GET /conversation-analytics وGET /whatsapp-displayname-status وواجهات تشفير الأعمال وواجهات Flow.

لإجراء المصادقة مع واجهة API العامة، يجب استخدام Payload وSignedContext المطلوبين من قبل التكامل.

  • المحتوى (Payload): {"app":"appId","appIntegration":"appIntegrationId","channel":"channelId"}
  • السياق الموقّع (SignedContext): (signature).{{base64(JSON.stringify(payload))}}
  1. احصل على معلومات قناة WhatsApp Cloud المطلوبة عن طريق استعلام channel باستخدام Open API.

الطلب:

query  {
apiViewer{
channel(channelId:"696327315430a1f98231dfde"){
appId
environment(envId:"7lQNjrXbDO"){
info
integration{
integrationId
}
appIntegrationSignature
}
}
}
}

نسخ

الاستجابة:

{
"data": {
"apiViewer": {
"channel": {
"appId": "699802d69a73fc555f1c6bc4",
"environment": {
"info": {
"integrationId": "whatsapp-cloud",
"build": 3,
"alias": "dev-whats-app-cloud",
"appIntegrationId": "696327325430a1cbd131dfdf",
"subscribed": true
},
"integration": {
"integrationId": "whatsapp-cloud"
},
"appIntegrationSignature": "1RJ7rKRTHbOBoY95AgtXF5WT2578gy9+b4ekBp727cQ="
}
}
}
}
}
نسخ
  1. أنشئ Payload بالشكل التالي:

    {"app":"appId","appIntegration":"appIntegrationId","channel":"channelId"}

مثال على Payload:


{"app":"699802d69a73fc555f1c6bc4","appIntegration":"696327325430a1cbd131dfdf","channel":"696327315430a1f98231dfde"}
        
نسخ
  1. شفّر Payload بصيغة Base64

  2. ادمج Payload المشفر مع Signature لإنشاء SignedContext بالشكل التالي:

    (signature).{{base64(JSON.stringify(payload))}}

مثال على SignedContext

WAIBCzM6tnzboIwkEPAVVyaVq7VGaIKBaQ/Q+gP6qdA=.eyJhcHAiOiI2MjA2MmMwYjcxNzE5NTMyMDE5MmIxOGY3IiwiYXBwSW50ZWdyYXRpb24iOiI2NDIwZmlnMjhlNjViNDY2ZDQ2MDdlYTIiLCJjaGFubmVsIjoiNzIxZjMyYWM0ZTEyMzYzZGUxMjBkMjlkIg==
نسخ
  1. أضفهم إلى العنوان كـ X-Woztell-Payload و X-Woztell-SignedContext.


واجهات API العامة

GET /waba-info

تُستخدم هذه الواجهة للحصول على معلومات WABA مثل اسم WABA، رقم الهاتف، المجال، ومعرّف WABA للقناة.

المعلمات

الاسم النوع الوصف إجباري
accessToken string رمز الوصول الذي تم توليده من قناة WhatsApp Cloud نعم
channelId string معرّف القناة إما هذا أو wabaID
wabaId string معرّف WABA إما هذا أو channelId

الطلب

curl --location --request GET '/waba-info?accessToken=${ACCESS_TOKEN}&channelId=${CHANNEL_ID}'
نسخ

أو

curl --location --request GET '/waba-info?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}'
نسخ

الاستجابة

{
"ok": 1,
"result": {
"waId" : "11111111111",
"phoneNumberId" : "123124123232",
"wabaId" : "422126422872292",
"name" : "My Business",
"phoneNumber" : "85212345678",
"phoneNumberCC" : "1",
"formattedPhoneNumber" : "+1 111-111-1111",
"namespace" : "2dwsa4_e24e_42f8_6b5a_110232ae4d5",
"embeddedSignup" : true
}
}
نسخ


GET /whatsapp-business-profile

تُستخدم هذه الواجهة لجلب ملف تعريف النشاط التجاري لرقم WhatsApp.

المعلمات

الاسم النوع الوصف إجباري
accessToken string رمز الوصول الذي تم توليده من قناة WhatsApp Cloud نعم
phoneNumberId string معرف رقم الهاتف نعم

الطلب

curl --location --request GET '/whatsapp-business-profile?accessToken=${ACCESS_TOKEN}&phoneNumberId=${PHONE_NUMBER_ID}'
نسخ

الاستجابة


{
"ok": 1,
"data": {
"about": "Hello this is John!",
"address": "ABC Building",
"description": "Testing 123",
"email": "testemail@woztell.com",
"profile_picture_url": "IMAGE_URL",
"websites": [
"https://woztell.com/"
],
"vertical": "PROF_SERVICES",
"messaging_product": "whatsapp"
}
}
نسخ


GET /whatsapp-displayname-status

تُستخدم هذه الواجهة لاسترجاع التفاصيل المرتبطة برقم WhatsApp

المصادقة

يجب تضمين Payload والسياق الموقّع في ترويسة الطلب.

المعلمات

الاسم النوع الوصف إجباري
accessToken string رمز الوصول الذي تم توليده من قناة WhatsApp Cloud نعم
phoneNumberId string معرّف رقم الهاتف نعم

الطلب

الاستجابة


{
"ok": 1,
"data": {
"account_mode": "LIVE",
"verified_name": "WozTell Test",
"code_verification_status": "EXPIRED",
"display_phone_number": "+1 123-321-2652",
"quality_rating": "GREEN",
"is_official_business_account": false,
"messaging_limit_tier": "TIER_1K",
"id": "123465061846704"
}
}
نسخ

PATCH /whatsapp-business-profile

تُستخدم هذه الواجهة لتحديث ملف تعريف النشاط التجاري لرقم WhatsApp.

المعلمات

الاسم النوع الوصف إجباري
accessToken string رمز الوصول المُولد من قناة WhatsApp Cloud نعم
phoneNumberId string معرّف رقم الهاتف نعم
profile object المحتوى الذي سيتم تحديثه في ملف النشاط التجاري نعم
كائن الملف الشخصي (Profile Object)
الاسم النوع الوصف إجباري
messaging_product string يُقبل فقط whatsapp نعم
about string نص "حول" لا
address string عنوان النشاط التجاري لا
description string نص "الوصف" لا
email string البريد الإلكتروني للنشاط التجاري لا
vertical string قطاع النشاط التجاري، راجع القائمة هنا للاطلاع على القيم المقبولة لا
website array رابط/روابط مواقع الويب ويجب أن تبدأ بـ http:// أو https:// (بحد أقصى موقعين) لا
profile_picture_url string رابط صورة الملف الشخصي لا

نقطة النهاية

هيكل الطلب 


{
"accessToken": "ACCESS_TOKEN",
"phoneNumberId": "123456890999",
"profile": {
"about": "This is the about text.",
"address": "Office",
"description": "Testing Text",
"email": "test999@woztell.com",
"profile_picture_url": "IMAGE_URL",
"websites": [
"https://woztell.com/blog/", "https://woztell.com/pricing/"
],
"vertical": "PROF_SERVICES",
"messaging_product": "whatsapp"
}
نسخ

الاستجابة


{
    "ok": 1
}

        
نسخ


PUT /media-id

تُستخدم هذه الواجهة لتحميل ملف وسائط إلى خادم WhatsApp من أجل الحصول على معرف وسائط (Media ID).

Idea
ملاحظة

سيتم الاحتفاظ بملف الوسائط الذي تم تحميله على خوادم WhatsApp Cloud لمدة 30 يومًا. بعد انتهاء الصلاحية، يجب على المستخدمين إعادة التحميل للحصول على معرف وسائط جديد.

المعلمات

الاسم النوع الوصف إجباري
phoneNumberId string معرّف رقم الهاتف نعم
accessToken string رمز الوصول المُولد من WhatsApp Cloud نعم
type string image, audio, video, file نعم
url string رابط ملف الوسائط نعم

نقطة النهاية

هيكل الطلب


{
"phoneNumberId": "123164329653069",
"accessToken": "ACCESS_TOKEN",
"type": "image",
"url": "MEDIA_URL",
}
نسخ

الاستجابة

{
"ok": 1,
"mediaId": "5770270532993662",
"fileType": "image"
}
نسخ


GET /conversation-analytics

تُستخدم هذه الواجهة لجلب تحليلات المحادثات ضمن نطاق زمني محدد.

المصادقة

يجب تضمين Payload والسياق الموقّع في ترويسة الطلب.



المعلمات

الاسم النوع الوصف إجباري
from UNIX Timestamp تاريخ البدء لنطاق التحليل نعم
to UNIX Timestamp تاريخ الانتهاء لنطاق التحليل نعم
granularity string درجة التفصيل المراد بها عرض البيانات؛ HALF_HOUR، DAILY أو MONTHLY نعم
numbers array قائمة أرقام الهواتف المطلوبة لتحليلها لا
metric_types string أنواع المقاييس؛ COST وCONVERSATION لا
conversation_types string أنواع المحادثات؛ FREE_ENTRY_POINT، FREE_TIER، REGULAR، UNKNOWN لا
conversation_directions string اتجاه بدء المحادثة؛ business_initiated وuser_initiated لا
dimensions string طرق تقسيم البيانات؛ phone، country، conversation_type، conversation_reaction لا

الطلبt

الاستجابة

{
"ok": 1,
"conversationAnalytics": {
"data_points": [
{
"start": 1672675200,
"end": 1672761600,
"conversation": 1,
"phone_number": "14132521446",
"country": "HK",
"conversation_type": "FREE_TIER",
"conversation_direction": "USER_INITIATED",
"cost": 0
},
{
"start": 1664899200,
"end": 1664985600,
"conversation": 1,
"phone_number": "14132521446",
"country": "HK",
"conversation_type": "FREE_TIER",
"conversation_direction": "BUSINESS_INITIATED",
"cost": 0
},
{
"start": 1676476800,
"end": 1676563200,
"conversation": 1,
"phone_number": "14132521446",
"country": "HK",
"conversation_type": "FREE_TIER",
"conversation_direction": "USER_INITIATED",
"cost": 0
}
]
}
}
نسخ


GET /catalogs

يمكن أن تُرجع هذه المكالمة عبر واجهة API قائمة الكتالوجات المرتبطة بـ WABA محددة.

المصادقة

يجب تضمين الحمولة والسياق الموقّع في رأس الطلب.

الطلب

الاستجابة

{
"ok": 1,
"data": [
{
"id": "1234577510532066",
"name": "test_products"
}
],
"paging": {
"hasPrevious": false,
"hasNext": false
}
}
نسخ


GET /products

يمكن أن تُرجع هذه المكالمة عبر واجهة API قائمة المنتجات ضمن كتالوج مرتبط بـ WABA محددة.

المصادقة

يجب تضمين الحمولة والسياق الموقّع في رأس الطلب.

المعاملات

الاسم النوع الوصف إجباري
catalogId string معرّف الكتالوج نعم

الطلب

الاستجابة

{
"ok": 1,
"data": [
{
"name": "Test Product 1",
"price": "HK$900.00",
"image_url": "IMAGE_URL_1",
"retailer_id": "a6y7a9y6f0",
"id": "25233996219581593"
},
{
"name": "Test Product 2",
"price": "HK$2,000.00",
"image_url": "IMAGE_URL_2",
"retailer_id": "yu7q27pbg1",
"id": "7887884911230830"
}
],
"paging": {
"cursors": {
"before": "QVFIUjNtVGtsNzNVRF9sTlhla2JOLVhzUGtlbGdSUURvRDFzelB2MVQwZAHpCb3NieHZAvbXhwZADVud09hZA1pwQVhNMHk4NkNwOEw2ZAEt4MFNpZAk4tR05YVTZAB",
"after": "QVFIUmRwOElZAeHVsWHhiUmk2WlJWcTdnY181UTUzUmx0NEpiSDAzSGdJcHFZALURQSXdmSFZALWHI0ekwyMkx1dU4tXzZAXQnppWjc5MTVWZAmNtb0oyOU9KcEhB"
},
"hasPrevious": false,
"hasNext": false
}
}
نسخ





واجهات برمجة التطبيقات لقوالب الرسائل

GET /whatsapp-message-templates

تتيح هذه الواجهة البرمجية عرض قوالب رسائل WhatsApp الخاصة بـ WABA محددة باستخدام الترقيم الصفحي والفلاتر الاختيارية.

المعلمات

الاسم النوع الوصف إجباري
wabaId string معرّف WABA المستهدف true
first integer عدد قوالب الرسائل؛ الحد الأقصى 100 true
after string مؤشر للصفحة التالية في الترقيم الصفحي؛ يجب تحديد إما "after" أو "before" false
before string مؤشر للصفحة السابقة في الترقيم الصفحي؛ يجب تحديد "after" أو "before" false
status string مصفوفة الحالات لتصفية النتائج؛ القيم الافتراضية: ["APPROVED"], ["PENDING"], ["REJECTED"], ["PENDING_DELETION"], ["DELETED"] false
category string فئة قالب الرسالة: ["TRANSACTIONAL"], ["MARKETING"], أو ["OTP"] false
quality_score String تقييم جودة القالب: GREEN, YELLOW أو RED false
language array لغة القالب؛ يجب أن تكون في مصفوفة باستخدام رموز اللغات المدعومة مثل en_US، es. false
name string البحث بالاسم لقالب الرسالة false
content Content البحث بالمحتوى لقالب الرسالة false
name or content string البحث بالاسم أو المحتوى لقوالب الرسائل false

الطلب

curl --location --request GET '/whatsapp-message-templates?accessToken=${ACCESS_TOKEN}&wabaId=${WABA_ID}&first=10&after=MAZDZD&status=["APPROVED"]'
نسخ

الاستجابة

"ok": 1,
"data": [
{
"id": "363730401994967",
"name": "sample_flight_confirmation",
"category": "TICKET_UPDATE",
"languages": [
"pt_BR",
"es",
"id",
"en_US"
],
"statuses": [
{
"language": "pt_BR",
"status": "APPROVED"
},
{
"language": "es",
"status": "APPROVED"
},
{
"language": "id",
"status": "APPROVED"
},
{
"language": "en_US",
"status": "APPROVED"
}
],
"templates": [
{
"language": "pt_BR",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "Esta é a sua confirmação de voo para {{1}}-{{2}} em {{3}}."
},
{
"type": "FOOTER",
"text": "Esta mensagem é de uma empresa não verificada."
}
],
"quality_score": {
"score": "UNKNOWN"
}
},
{
"language": "es",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "Confirmamos tu vuelo a {{1}}-{{2}} para el {{3}}."
},
{
"type": "FOOTER",
"text": "Este mensaje proviene de un negocio no verificado."
}
],
"quality_score": {
"score": "UNKNOWN"
}
},
{
"language": "id",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "Ini merupakan konfirmasi penerbangan Anda untuk {{1}}-{{2}} di {{3}}."
},
{
"type": "FOOTER",
"text": "Pesan ini berasal dari bisnis yang tidak terverifikasi."
}
],
"quality_score": {
"score": "UNKNOWN"
}
},
{
"language": "en_US",
"status": "APPROVED",
"rejected_reason": "NONE",
"components": [
{
"type": "HEADER",
"format": "DOCUMENT"
},
{
"type": "BODY",
"text": "This is your flight confirmation for {{1}}-{{2}} on {{3}}."
},
{
"type": "FOOTER",
"text": "This message is from an unverified business."
}
],
"quality_score": {
"score": "UNKNOWN"
}
}
]
}
],
"paging": {
"cursors": {
"before": "MAZDZD",
"after": "MAZDZD"
},
"hasNext": true,
"hasPrevious": false
}
} "hasPrevious": false }
نسخ


PUT /whatsapp-message-template

يمكن لهذا الطلب عبر API إنشاء قالب رسالة جديد كليًا على WhatsApp.

ملاحظة

يسمح لكل حساب WhatsApp Business بإنشاء 100 قالب رسالة في الساعة.


المعلمات

الاسم النوع الوصف إجباري
wabaId string معرّف WABA true
accessToken string رمز الوصول المولد من قناة WhatsApp Cloud true
name string اسم قالب الرسالة true
language string لغة قالب الرسالة true
category string فئة قالب الرسالة: TRANSACTIONAL، MARKETING أو OTP true
components array محتوى قالب الرسالة. يرجى الرجوع إلى هذا الرابط لهيكلية المكون. true
ملاحظات

من خلال إدراج رابط الصورة في "example":{"header_handle":["IMAGE_URL"]}، ستقوم هذه الواجهة البرمجية تلقائيًا بتحميل المثال أثناء إنشاء قالب الرسالة.


نقطة النهاية

جسم الطلب

طلب نموذجي (رأس بصري - صورة)


{
"wabaId": "190787529545503",
"accessToken": "ACCESS_TOKEN",
"name": "test_template",
"language": "en_US",
"category": "MARKETING"
"components": [
{
"type": "BODY",
"text": "Hi there! Are you interested in our latest promotional sale?"
},
{
"type": "HEADER",
"format": "IMAGE",
"example":{"header_handle":["IMAGE_URL"]}
}
]
}
نسخ

طلب نموذجي (المعلمات، التذييل، وأزرار الإجراءات)


{
"wabaId": "190787529545503",
"accessToken": "ACCESS_TOKEN",
"name": "test_template",
"language": "en_US",
"category": "MARKETING"
"components": [
{
"type": "BODY",
"text": "hello {{1}} this is body template",
"example":{"body_text":[["Test"]]}
},
{
"type": "FOOTER",
"text": "this is footer template"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "PHONE_NUMBER",
"text": "Call",
"phone_number":"+85212769072"
},
{
"type": "URL",
"text": "URL",
"url":"https://www.woztell.com/"
}
]
}
]
}
نسخ

طلب نموذجي (المعلمات وأزرار الرد السريع)


{
"wabaId": "190787529545503",
"accessToken": "ACCESS_TOKEN",
"name": "test_template",
"language": "en_US",
"category": "MARKETING"
"components": [
{
"type": "BODY",
"text": "hello {{1}} this is body template",
"example":{
"body_text":[["Test"]]
}
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "yes"
},
{
"type": "QUICK_REPLY",
"text": "no"
}
]
}
]
}
نسخ

الاستجابة

{
"ok": 1,
"id": "516723536625510",
"language": "en_US"
}
نسخ


PATCH /whatsapp-message-template

يمكن لهذا الطلب عبر API تعديل قالب رسالة موجود مسبقًا.

ملاحظة

يمكن تعديل قالب الرسالة مرة واحدة فقط خلال 24 ساعة، وحتى 10 مرات خلال 30 يومًا.


المعلمات

الاسم النوع الوصف إجباري
wabaId string معرف WABA صحيح
accessToken string رمز الوصول الذي تم إنشاؤه من قناة WhatsApp Cloud صحيح
messageTemplateName string اسم قالب الرسالة صحيح
messageTemplateLanguage string لغة قالب الرسالة صحيح
messageTemplateId string المعرّف الفريد لقالب الرسالة صحيح
components array المحتوى الذي سيتم تحديثه في قالب الرسالة صحيح
ملاحظات

لكل إصدار لغوي من قالب الرسالة معرّفه الخاص. لتعديل قالب رسالة باستخدام PATCH /whatsapp-message-templates، ستحتاج إلى تحديد إصدار اللغة من القالب.

عادةً ما تُرجع GET /whatsapp-message-templates فقط معرّف اللغة الأحدث. لذلك، يجب أولاً الحصول على معرّف لغة معينة عن طريق تطبيق مرشح اللغة في GET /whatsapp-message-templates.


نقطة النهاية

نص الطلب

{
"wabaId": "12986521265530",
"accessToken": "ACCESS_TOKEN",
"messageTemplateLanguage": "en_US",
"messageTemplateName": "test_template",
"messageTemplateId": "1748340935544945",
"components": [
{
"type": "BODY",
"text": "Winter's coming, it's time to check out our latest winter collection!"
}
]
نسخ

الاستجابة

{
    "ok": 1,
    "success": true
}
نسخ


DEL /whatsapp-message-template

يمكن أن يؤدي هذا الطلب إلى حذف قالب رسالة موجود.

المعلمات

الاسم النوع الوصف إجباري
wabaId string معرف WABA صحيح
accessToken string رمز الوصول الذي تم إنشاؤه من قناة WhatsApp Cloud صحيح
name string اسم قالب الرسالة صحيح

نقطة النهاية

نص الطلب

{
"wabaId": "12986521265530",
"accessToken": "ACCESS_TOKEN",
"name": "test_template"
}
نسخ

الاستجابة

{
    "ok": 1,
    "success": true
}
نسخ


واجهات برمجة تطبيقات التدفقات

GET /flow

تُستخدم هذه الواجهة لاسترجاع قائمة التدفقات.

المصادقة

يجب تضمين الحمولة & السياق الموقّع في الترويسة.

المعلمات

الاسم النوع الوصف إجباري
limit عدد صحيح عدد التدفقات المطلوب استرجاعها صحيح
after سلسلة نصية للحصول على المجموعة التالية من المحادثات، يمكن الحصول عليها من paging.cursors في الاستجابة لا
before سلسلة نصية للحصول على المجموعة التالية من المحادثات، يمكن الحصول عليها من paging.cursors في الاستجابة لا

الطلب

الاستجابة

{
"ok": 1,
"data": [
{
"label": "TEST FLOW (DRAFT)",
"value": "885692686603466",
"status": "draft",
"assets": [
{
"id": "SIGN_UP",
"label": "Customer Success (SIGN_UP)",
"data": "{}",
"preview": {
"preview_url": "https://business.facebook.com/wa/manage/flows/885692686603466/preview/?token=abdfac6c-1319-4a01-a896-d26482f44659",
"expires_at": "2024-03-08T04:52:37+0000"
}
}
],
"triggerMatchingObject": null
}
],
"paging": {
"cursors": {
"before": "QVFIUnJEbERTSFN1TEM5THFDdkJYNjExaF9xSUxjNjVGazJUWHBWTWV3Ukx0V2JQSFlMYmRzT0RXanpMeUVnd1VnSUlnQVBkamVyNkQ5dW9Ocm5YNVpoY2VR",
"after": "QVFIUnJEbERTSFN1TEM5THFDdkJYNjExaF9xSUxjNjVGazJUWHBWTWV3Ukx0V2JQSFlMYmRzT0RXanpMeUVnd1VnSUlnQVBkamVyNkQ5dW9Ocm5YNVpoY2VR"
},
"hasNext": false,
"hasPrevious": false
}
}
نسخ


GET /flow-screen-payload

تُستخدم هذه الواجهة لاسترجاع حمولة شاشة التدفق لتدفق معين.

المصادقة

يجب تضمين الحمولة & السياق الموقّع في الترويسة.

المعلمات

الاسم النوع الوصف إجباري
flowId string المعرّف الفريد لتدفق معين. صحيح

الطلب

الاستجابة


{
"ok": 1,
"payload": {
"id": "screen_with_data",
"label": "Feedback With Data (screen_with_data)",
"data": "{\n \"would_recommend\": \"\",\n \"how_to_do_better\": \"\"\n}",
"screens": [
{
"id": "screen_with_data",
"label": "Feedback With Data (screen_with_data)",
"data": "{\n \"would_recommend\": \"\",\n \"how_to_do_better\": \"\"\n}",
"preview": {
"preview_url": "https://business.facebook.com/wa/manage/flows/1332875717353551/preview/?token=ed47bb0a-f749-4a0f-87f3-889f003b53ed",
"expires_at": "2024-03-06T03:56:10+0000"
}
}
]
}
}
نسخ


GET /flow-preview

تُستخدم هذه الواجهة لاسترجاع رابط معاينة لتدفق معين.

المصادقة

يجب تضمين الحمولة & السياق الموقّع في الترويسة.

المعلمات

الاسم النوع الوصف إجباري
flowId string المعرّف الفريد لتدفق معين. صحيح

الطلب

الاستجابة

{
"ok": 1,
"data": {
"preview_url": "https://business.facebook.com/wa/manage/flows/994520121646941/preview/?token=5615e315-899c-4787-b211-a512c35f83aa",
"expires_at": "2024-03-06T03:46:30+0000"
}
}
نسخ


GET /flow-detail

تُستخدم هذه الواجهة لاسترجاع تفاصيل تدفق معين.

المصادقة

يجب تضمين الحمولة & السياق الموقّع في الترويسة.

المعلمات

الاسم النوع الوصف إجباري
flowId string المعرّف الفريد لتدفق معين. صحيح

الطلب

الاستجابة

{
"ok": 1,
"id": "678952344393952",
"name": "Test Flow 2",
"categories": [
"OTHER"
],
"preview": {
"preview_url": "https://business.facebook.com/wa/manage/flows/678952344393952/preview/?token=90fd19f9-edf7-4a6a-8fea-8da4cbb687f7",
"expires_at": "2024-03-06T07:39:50+0000"
},
"status": "DRAFT",
"validation_errors": [],
"json_version": "3.1",
"whatsapp_business_account": {
"id": "619018099309339",
"name": "Test Group Limited (UAT)",
"currency": "USD",
"timezone_id": "42",
"message_template_namespace": "a02e2441_69dd_4ea2_a90b_4aca392f0afa"
},
"application": {
"link": "https://platform.woztell.com/",
"name": "Woztell",
"id": "689996742158814"
}
}
نسخ


PUT /create-flow

تُستخدم هذه الواجهة لإنشاء تدفق جديد.

المصادقة

يجب تضمين الحمولة & السياق الموقّع في الترويسة.

المعلمات

الاسم النوع الوصف إجباري
name string اسم التدفق الجديد. صحيح
categories array قائمة بفئات التدفق. يمكن إدخال أكثر من قيمة، ولكن يجب إدخال واحدة على الأقل: SIGN_UP، SIGN_IN، APPOINTMENT_BOOKING، LEAD_GENERATION، CONTACT_US، CUSTOMER_SUPPORT، SURVEY، OTHER صحيح
clone_flow_id string معرف التدفق المراد نسخه غير مطلوب
endpoint_url string رابط نقطة النهاية للتدفق. لا تُدخل هذا الحقل إذا كنت تنسخ تدفقًا بإصدار JSON أقل من 3.0. غير مطلوب

نقطة النهاية

نص الطلب

{
"data": {
"name": "Test Flow 2",
"categories": [ "SURVEY" ],
"clone_flow_id": "368669698913502",
"endpoint_url": "https://webhook.site/ff434d70-465c-4c79-90cc-333adfa858b5"
}
}
نسخ

الاستجابة

{
"ok": 1,
"id": "1557286081777970"
}
نسخ


PATCH /flow-metadata

تُستخدم هذه الواجهة لتحديث بيانات وصفية لتدفق معين.

المصادقة

يجب تضمين الحمولة & السياق الموقّع في الترويسة.

المعلمات

الاسم النوع الوصف إجباري
flowId string معرّف التدفق الجاري تحديثه صحيح
name string الاسم الجديد للتدفق غير مطلوب
categories array فئات جديدة للتدفق غير مطلوب
endpoint_url string رابط نقطة النهاية لتدفق واتساب. لا تدخل هذا الحقل إذا كنت تقوم بتحديث تدفق بإصدار JSON أقل من 3.0 غير مطلوب

نقطة النهاية

نص الطلب

{
"flowId": "1005133727262236",
"data": {
"name": "Test Flow ABC"
},
"endpoint_url": "https://webhook.site/ff434d70-465c-4c79-90cc-333adfa858b5"
}
نسخ

الاستجابة

{
"ok": 1,
"success": true
}
نسخ


PATCH /flow-json

تُستخدم هذه الواجهة لتحديث JSON الخاص بتدفق معين.

المصادقة

يجب تضمين الحمولة & السياق الموقّع في الترويسة.

المعلمات

الاسم النوع الوصف إجباري
name string اسم التدفق صحيح
version string إصدار JSON الخاص بالتدفق صحيح
screens JSON شاشات التدفق التي يمكن إدخالها في مُنشئ التدفق في WhatsApp Manager صحيح

نقطة النهاية

هيكل الطلب

{
"flowId": "910367050421850",
"data": {
"version": "3.1",
"screens": [
{
"id": "PREFERENCES",
"title": "Update Preferences",
"data": {},
"terminal": true,
"layout": {
"type": "SingleColumnLayout",
"children": [
{
"type": "Form",
"name": "form",
"children": [
{
"type": "CheckboxGroup",
"label": "Communication types",
"required": true,
"name": "communicationTypes",
"data-source": [
{
"id": "0",
"title": "Special offers and promotions"
},
{
"id": "1",
"title": "Changes to my subscription"
},
{
"id": "2",
"title": "News and events"
},
{
"id": "3",
"title": "New products"
}
]
},
{
"type": "CheckboxGroup",
"label": "Contact Preferences",
"required": false,
"name": "contactPrefs",
"data-source": [
{
"id": "0",
"title": "Whatsapp"
},
{
"id": "1",
"title": "Email"
},
{
"id": "2",
"title": "SMS"
}
]
},
{
"type": "Footer",
"label": "Done",
"on-click-action": {
"name": "complete",
"payload": {
"communicationTypes": "${form.communicationTypes}",
"contactPrefs": "${form.contactPrefs}"
}
}
}
]
}
]
}
}
]
}
}

نسخ

الاستجابة

{
"ok": 1,
"success": true,
"validation_errors": []
}
نسخ


DEL /flow

واجهة برمجة التطبيقات هذه مخصصة لحذف تدفق.

المصادقة

يجب تضمين الحمولة وسياق التوقيع في رأس الطلب.

المعلمات

الاسم النوع الوصف مطلوب
flowId string معرف التدفق الذي سيتم حذفه نعم

نقطة النهاية

https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/api/flow
نسخ

هيكل الطلب

{
"flowId": "913687770028833"
}
نسخ

الاستجابة


{
"ok": 1,
"success": true
}
نسخ


POST /publish-flow

واجهة برمجة التطبيقات هذه مخصصة لنشر تدفق.

المصادقة

يجب تضمين الحمولة وسياق التوقيع في رأس الطلب.

المعلمات

الاسم النوع الوصف مطلوب
flowId string معرف التدفق الذي سيتم نشره نعم

نقطة النهاية

https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/api/publish-flow
نسخ

هيكل الطلب

{
"flowId": "913687770028833"
}
نسخ

الاستجابة

{
"ok": 1,
"success": true
}
نسخ


POST /deprecate-flow

واجهة برمجة التطبيقات هذه مخصصة لإيقاف تدفق عن العمل.

المصادقة

يجب تضمين الحمولة وسياق التوقيع في رأس الطلب.

المعلمات

الاسم النوع الوصف مطلوب
flowId string معرف التدفق الذي سيتم إيقافه عن العمل نعم

نقطة النهاية

https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/api/deprecate-flow
نسخ

هيكل الطلب

{
"flowId": "913687770028833"
}
نسخ

الاستجابة

{
"ok": 1,
"success": true
}
نسخ


واجهات برمجة تطبيقات تشفير الأعمال

POST /whatsapp-business-encryption

واجهة برمجة التطبيقات هذه مخصصة لتعيين المفتاح العام للأعمال.

المصادقة

يجب تضمين الحمولة وسياق التوقيع في رأس الطلب.

المعلمات

الاسم النوع الوصف مطلوب
publicKey string مفتاح RSA عام للأعمال بطول 2048 بت تم إنشاؤه. الرجاء الرجوع إلى  هنا  لمعرفة كيفية إنشاء المفتاح العام. نعم

نقطة النهاية

https://api.whatsapp-cloud.woztell.sanuker.com/v1.2/whatsapp-business-encryption
نسخ

هيكل الطلب


{
"publicKey": "-----BEGIN PUBLIC KEY-----\nABCDIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAls1409DedWXmHnt0Pb6s\nIdGkL6pFXxd5vPxrk/CChQssCGLK7jEPQwzhAZ/La7Cg/IvxjxvgC8DD3v8ZniU7\nHu5xPftKm3rEvNRwstRHaoPF+CNxHzHMy2DkgdVxvnBI6qtEjn+yZXdEOHhGHejH\nEf0EfFSMoyCaXea4E3LqvOE8iJ42uNtC7D4TmyeE+dTKudclswNA3QDA0zLH1M+Y\n9Oxv06FgD9S8gmvSwJgn3hfwLc/j5Dj5Qr6NAd9dRMQGLGeFEbg/JJXAVaAAxFlb\nvITHRG1ynRZDcrAri377Z+HS8G43o3TmrPyD0zRXQFbHCu+kOH5DBs3yFRcFjA7L\nwQIDAQAB\n-----END PUBLIC KEY-----" }
نسخ

الاستجابة

{
"ok": 1
}
نسخ


GET /whatsapp-business-encryption

واجهة برمجة التطبيقات هذه مخصصة لاسترجاع المفتاح العام للأعمال.

المصادقة

يجب تضمين الحمولة وسياق التوقيع في رأس الطلب.

الطلب


curl --location 'https://api.whatsapp-cloud.woztell.sanuker.com/v1.2-dev/whatsapp-business-encryption'

نسخ

الاستجابة


{
"ok": 1,
"data": [
{
"business_public_key": "-----BEGIN PUBLIC KEY-----\nABCDIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAls1409DedWXmHnt0Pb6s\nIdGkL6pFXxd5vPxrk/CChQssCGLK7jEPQwzhAZ/La7Cg/IvxjxvgC8DD3v8ZniU7\nHu5xPftKm3rEvNRwstRHaoPF+CNxHzHMy2DkgdVxvnBI6qtEjn+yZXdEOHhGHejH\nEf0EfFSMoyCaXea4E3LqvOE8iJ42uNtC7D4TmyeE+dTKudclswNA3QDA0zLH1M+Y\n9Oxv06FgD9S8gmvSwJgn3hfwLc/j5Dj5Qr6NAd9dRMQGLGeFEbg/JJXAVaAAxFlb\nvITHRG1ynRZDcrAri377Z+HS8G43o3TmrPyD0zRXQFbHCu+kOH5DBs3yFRcFjA7L\nwQIDAQAB\n-----END PUBLIC KEY-----",
"business_public_key_signature_status": "VALID"
}
]
}
نسخ