برنامج الإحالة هو نظام يكافئ العملاء أو شركاء الشركة من خلال تقديم حوافز أو مكافآت لجلب مشاركين جدد.
من الناحية التقنية، يتضمن برنامج الإحالة عدة مكونات رئيسية:
- رابط دعوة — معرف فريد يسمح للمستخدمين أو العملاء بدعوة الآخرين للمشاركة في البرنامج. يمكن للمُدعِي مشاركة هذا الرابط عبر قنوات مختلفة (على سبيل المثال، ستتناول هذه المقالة إنشاء الروابط عبر بوت واتساب، ولكن يمكن مشاركة روابط برنامج الإحالة عبر أي مراسل تفضله).
- قاعدة بيانات المشاركين، يتم تنفيذها من خلال دمج MaviBot ووظائف جداول بيانات Google، حيث يتم تسجيل معلومات كل من المستخدمين المُدعَوين والمُدعِين.
- نظام تتبع الإحالات الذي يراقب الإجراءات المتعلقة بجلب مشاركين جدد عبر روابط الإحالة. يخزن النظام بيانات جميع الإحالات، مما يسمح لك بالتحقق مما إذا كانت إحالة معينة موجودة بالفعل في النظام كمستخدم تمت دعوته سابقًا.
نوصي بشدة بمراجعة قسمي "أساسيات بناء البوت على Mavibot.ai" رابط و"جداول بيانات Google" رابط قبل إنشاء تدفق البوت الخاص بك.
نظام الإحالة في واتساب
تتكون وظيفة البوت الذي يتم إنشاؤه من كتل تشمل المكونات التالية:
- إنشاء رابط إحالة (تابع)؛ رابط
- التحقق مما إذا كان المستخدم الجديد موجودًا بالفعل في قاعدة البيانات؛ رابط
- إخطار المستخدم المُدعِي بوجود إحالة جديدة؛ رابط
- تسجيل المستخدمين في قاعدة البيانات؛ رابط
- طلب قائمة الإحالات. رابط
إنشاء رابط الإحالة
لنقم بإنشاء كتلة تحتوي على رابط مضمن سيرسله البوت إلى المستخدم عند الأمر "رابط". للقيام بذلك، أنشئ كتلة جديدة في التدفق باستخدام إحدى الطريقتين:
- انقر نقرًا مزدوجًا على منطقة فارغة في لوحة البناء:

- باستخدام زر "حفظ" في أسفل الشاشة واختيار نوع الكتلة:

بعد ذلك، في شرط الكتلة، أدخل كلمة "رابط" واضبط نوع المطابقة على "تجاهل الأخطاء المطبعية وعدم الدقة" (وهذا مفيد في حالة الأخطاء المطبعية من المستخدم أو أخطاء الرسائل الأخرى):

لتحديد من قام بإحالة المستخدم، يقوم البوت بإنشاء رابط باستخدام القالب التالي: https://wa.me/(رقم هاتفك المرتبط بالبوت)?text=لقد%20تمت%20توصيتك%20من%20قبل%20#{phone}%20😌مرحبًا

دعنا نلقي نظرة فاحصة على رابط القالب: https://wa.me/(رقم هاتفك المرتبط بالبوت)?text=لقد%20تمت%20توصيتك%20من%20قبل%20#{phone}%20😌مرحبًا، حيث:
- استبدل الأقواس "(رقم هاتفك المرتبط بالبوت)" برقم الهاتف المقابل؛
- #{phone} يتم استبداله تلقائيًا برقم هاتف المستخدم الذي طلب رابط شريكه.
نرسل الرابط الذي تم إنشاؤه ليس كنص في الكتلة، ولكن كمرفق — رابط قابل للنقر مع إشعار (انظر الشكل 2 والشكل 3):
- اختر إدراج مرفق
- حدد النوع — رابط، والصقه في حقل 'رابط المرفق':

في هذه الحالة، سيظهر الرابط بصريًا بشكل مختصر:

دعنا نختبر وظيفة الرابط باستخدام ميزة "اختبار البوت".

إليك النتيجة: الرابط يوجه المستخدم إلى محادثة المراسل المناسبة مع رقم هاتفك:

بهذه الطريقة، قمت بنجاح بإنشاء رابط دعوة يمكن للمستخدمين المحتملين استخدامه للوصول إلى البوت. بالإضافة إلى ذلك، عند النقر على هذا الرابط، يتم توجيه المستخدم إلى نافذة الدردشة مع رسالة مملوءة مسبقًا. (انظر الشكل 6)

التحقق من المستخدم
استخدام الدوال والتعبيرات العادية في كتلة
لن يعمل أمر التحقق والإدخال في قاعدة البيانات إلا إذا وجد البوت رقم هاتف في رسالة المستخدم. لذلك، من الضروري تقسيم العبارة المستلمة إلى أجزاء.
لهذا، يتم استخدام الدالة splitter().
دالة Splitter()
splitter(str, s, n) - تقسم سلسلة نصية إلى أجزاء. ترجع الدالة مصفوفة من العناصر.
المعلمات:
! str ****- السلسلة النصية الأصلية
! s ****- محدد السلسلة النصية
n - الحد الأقصى لعدد العناصر
مثال
دالة تقسيم السلسلة النصية:

بعد ذلك، يحتاج البوت إلى التحقق مما إذا كان تسلسل الأرقام في السلسلة النصية هو بالفعل رقم هاتف. للقيام بذلك، نستخدم التعبيرات العادية التالية:
- رقم هاتف عام:
^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$ -
تغيير الرقم الروسي! رقم هاتف روسي فقط:
^((\+7|7|8)+([0-9]){10})$

للحصول على معلومات حول العمل مع التعبيرات العادية، يرجى الرجوع إلى المقالة بعنوان "التعبيرات العادية." رابط
بعد أن يتحقق البوت من أن تسلسل الأرقام هو بالفعل رقم هاتف، قم بحفظه من الرسالة كمتغير (على سبيل المثال، #{reff}).
التحقق من رقم هاتف المستخدم كإحالة في قاعدة البيانات
الآن من الضروري التحقق مما إذا كان رقم هاتف المستخدم الذي تبع الرابط هو بالفعل إحالة (تمت دعوته سابقًا من قبل شخص ما ومسجل في قاعدة بياناتنا). للقيام بذلك، أنشئ كتلة في التدفق مع وظيفة البحث في العمود.
استخدم وظيفة البحث في العمود بالنقر على "طلب API" في الكتلة، حيث تحتاج إلى تعيين قيم المعلمات التالية:

! رابط الدالة: https://store.salebot.pro/function/findcell رابط
! معلمات طلب JSON:
{ "id": "معرف_الجدول_الخاص_بك", "find": "نص_للبحث", "col": رقم_العمود_للبحث_فيه, "return": رقم_العمود_لإرجاعه, "creds_path": "مسار_ملف_بيانات_الاعتماد_الخاص_بك" }
معلمات الاستجابة:
"status": "1" — تم العثور على القيمة
"status": "0" — لم يتم العثور على القيمة
"data" — القيمة التي تم العثور عليها
"cell_number" — موقع الخلية التي تم العثور عليها
البحث حسب العمود وعرض النص من الصف بأكمله
يجب تعيين معلمة الإرجاع إلى 0.
&#xNAN;{ "id": "معرف_الجدول_الخاص_بك", "find": "نص_للبحث", "col": 2, "return": 0 }
الاستجابة: {"status":"1","data":{"0":"\u0634\u0645\u0633","1":"\u0641\u062c\u0631","2":"\u0633\u0642\u0641","3":"","4":"\u0633\u0645\u0627\u0621"},"cell_number":{"row":4,"col":1, "col_letter":"A"}}
تحليل الاستجابة:
data — الاستجابة
data|0 — الخلية 1
data|1 — الخلية 2
data|2 — الخلية 3
data|3 — الخلية 4
cell_number|row — الصف
cell_number|col — العمود
لمعرفة المزيد عن الدوال المتاحة للعمل مع الجداول، راجع المقالة بعنوان "جداول بيانات Google." رابط
كتلة الإخطار
لإخطار المستخدم الذي شارك رابط الإحالة بأن عميلًا جديدًا قد تبع الرابط بنجاح، سنقوم بإنشاء كتلة مخصصة. لإرسال إخطار حول إنشاء إحالة جديدة، استخدم معلمات الطلب التالية (النوع: POST - JSON):

يتم إجراء الطلبات باستخدام طريقة POST إلى الرابط: https://chatter.salebot.pro/api/{api_key}/{action} حيث:
-
api_keyهو مفتاح الوصول إلى API لمشروعك، والذي يمكن الحصول عليه من إعدادات المشروع (انظر الشكل 11).

يمكنك استرداد مفتاح الوصول باستخدام المتغير #{api_key}، الذي يخزن رمز الوصول المولد الحالي. لا تنس إنشاء الرمز قبل استخدامه.
! رابط الطلب: https://chatter.salebot.pro/api/#{api_key}/whatsapp_message رابط

يمكنك العثور على مزيد من التفاصيل حول وظائف طلب API هنا. رابط
إضافة المستخدمين المُدعَوين والمُدعِين إلى قاعدة البيانات
للقيام بذلك، سنستخدم الإدخال صفًا بصف في أعمدة محددة، ويتم ذلك باستخدام دالة mapping.
يجب أن يحتوي الجدول على رأس مملوء (خلية واحدة على الأقل في الصف الأول).
! رابط الدالة https://store.salebot.pro/function/gsheets رابط
! معلمات طلب JSON:
{ "id": "معرف_الجدول_الخاص_بك", "mapping": { "a": "#{متغير}", "b": "#{متغير_آخر}", "d": "نص عادي" } }
إذا كنت تريد كتابة صفوف ليس في الورقة الأولى، أضف المعلمة list_name إلى الطلب:
{ "id": "معرف_الجدول_الخاص_بك", "mapping": { "a": "نص عادي", "b": "#{متغير}" }, "list_name": "اسم الورقة" }
المعلمات:
- id — معرف الجدول*
- a, b, c, d — أسماء الأعمدة
- list_name — اسم ورقتك (على سبيل المثال، "ورقة2")
*تأكد من الاستبدال بمعرف الجدول الفعلي الخاص بك.
مثال على الاستجابة: {"number_row":8}
إذا تم تنفيذ الطلب بنجاح، ستتضمن الاستجابة رقم الصف، والذي يمكنك حفظه واستخدامه للعمليات اللاحقة.
عرض قائمة الإحالات
دعنا نضيف أمرًا إضافيًا إلى البوت يسمح للمستخدمين بعرض قائمة الإحالات الخاصة بهم.
للعثور على جميع القيم المحددة في عمود، استخدم دالة findcell مع المعلمة "find_all". سيبحث هذا عن جميع تكرارات قيمة "find_all" في العمود المحدد "col" ويعيد قائمة بالقيم الفريدة من عمود "return" كسلسلة نصية.
! رابط الدالة: https://store.salebot.pro/function/findcell رابط
! معلمات طلب JSON:
{ "id": "معرف_الجدول", "find_all": "قيمة_البحث", "list_name": "اسم_الورقة", "col": "رقم_العمود_للبحث_فيه", "return": "رقم_العمود_لإرجاع_القيم_منه", "find": "!" }

في القيم المحفوظة، حدد:
قائمة → القائمة
الكمية → الكمية
للمستخدم، اعرض الرسالة:
"لقد قمت بإحالة #{spisok}، إجمالي إحالاتك: #{quantity}"
في المراسلين الآخرين، يكون تنفيذ نظام الإحالة هذا أسهل لأن بيانات المُدعِي تُمرر كمعلمة مخفية أثناء الانتقال عبر الرابط، لذلك لا يحتاج المستخدم الجديد إلى إرسال رسالة مثل "لقد تمت دعوتي من قبل هذا الرقم."