تسجيل الدخولابدأ الفترة التجريبية المجانية
Meta Tech Provider

امنح وكيل LangChain رقم WhatsApp

يحصل وكيل LangChain على WhatsApp من نصفين. تصل الرسائل الواردة إلى مسار الويب لديك عبر خطاف الويب (webhook) الخاص بالرقم، ثم يستدعي المسار الوكيل. وللتنفيذ، يحمّل الوكيل أدوات MCP من EasyCoexistence عبر MCPAdapter في LangChain مع OAuth، أو يستدعي Cloud API مباشرة باستخدام phone_number_id ورمز الوصول (token) الخاصين بالرقم.

1.4.0

الحد الأدنى لإصدار langchain[mcp] لمساحة الاسم langchain.mcp، وهي تجريبية.

auth="oauth"

يشغّل تدفق OAuth 2.1 كاملاً: الاكتشاف وتسجيل العميل الديناميكي وإعادة التوجيه في المتصفح وتبادل token.

131047

خطأ Meta عند مرور أكثر من 24 ساعة منذ آخر رد من المستلم.

كيف يحمّل وكيل LangChain أدوات WhatsApp؟

عبر MCPAdapter، عميل MCP في LangChain، الذي يسلّم أدوات خادم MCP إلى create_agent كأدوات LangChain عادية. يتطلب langchain[mcp] بالإصدار 1.4.0 أو أحدث، وهو تجريبي.

تُفوَّض المصادقة إلى FastMCP. تمرير auth="oauth" في العميل يشغّل تدفق OAuth 2.1 كاملاً: الاكتشاف وتسجيل العميل الديناميكي وإعادة التوجيه في المتصفح وتبادل token. وهذا ما يتوقعه خادم MCP في EasyCoexistence، فلا يوجد مفتاح تنشئه أو تلصقه. افتراضياً تبقى الرموز في الذاكرة فتكرر كل عملية تشغيل خطوة المتصفح، أما موفر OAuth في FastMCP مع مخزن token فيحتفظ بها بين عمليات التشغيل.

بعد التحميل يرى الوكيل الأدوات مع أوصافها: list_numbers أولاً، لأن كل أداة أخرى تأخذ منها connection_id، ثم send_message وsend_template وlist_templates وget_number_health وبقية الأدوات.

Load the tools into an agent, from LangChain's documented pattern
from fastmcp.client import Client
from langchain.agents import create_agent
from langchain.mcp import MCPAdapter

URL = "https://easycoexistence.com/api/mcp"

async def build_agent(model: str):
    async with MCPAdapter(Client(URL, auth="oauth")) as adapter:
        tools = await adapter.list_tools()
        return create_agent(model, tools)

كيف تصل رسالة WhatsApp الواردة إلى الوكيل؟

عبر webhook، لأن MCP لا يستطيع ذلك. البروتوكول قائم على الطلب والاستجابة، فلا شيء فيه يتيح للخادم إيقاظ العميل عندما يكتب أحد الزبائن.

اضبط وجهة webhook للرقم على مسار في تطبيقك، مع سر عشوائي طويل في مسار عنوان URL. يرد المسار على طلب GET للتحقق من Meta بقيمة challenge كما هي، ويقبل كل طلب POST، ويعيد 200 فوراً ويضع العمل في قائمة انتظار. ثم يأخذ عامل المرسل والنص من الحمولة ويستدعي الوكيل بهما، مع رقم المرسل كمعرّف للمحادثة (thread id) لتبقى الذاكرة لكل زبون على حدة.

تحقق من السر في URL بدلاً من ترويسة X-Hub-Signature-256. توقّع Meta بالسر الخاص بتطبيق Tech Provider، وهو لا يُشارك أبداً، فلا يستطيع صاحب الحساب التحقق من تلك الترويسة.

هل يرسل الوكيل عبر MCP أم عبر Cloud API؟

كلاهما يصلح، والفرق في من يحمل القواعد. تحمل أدوات MCP قواعد WhatsApp في أوصافها، مثل أن send_message يعمل داخل نافذة 24 ساعة فقط، وأن send_template هي الطريق للوصول إلى من لم يكتب. والنموذج الذي يقرأ هذه الأوصاف يختار الأداة الصحيحة في أغلب الأحيان، وهذا مفيد حين يقرر الوكيل بحرية.

أما أداة بسيطة من عندك ترسل إلى نقطة النهاية (endpoint) الخاصة بالرسائل في Cloud API باستخدام token الرقم فهي أبسط حين تكون مهمة الوكيل ضيقة، كالرد دائماً على من كتب للتو. عندها يكون فحص النافذة في شيفرتك، وهو المكان الذي تنتمي إليه قاعدة يجب ألا تُكسر أبداً. النص الحر خارج النافذة يعود بالخطأ 131047، ولا يرى الزبون شيئاً.

الأخطاء الشائعة

  • توقع أن يسلّم MCP الرسائل الواردة. من دون مسار webhook لن يسمع الوكيل من أي زبون أبداً.
  • ترك رموز OAuth في الذاكرة على الخادم. كل إعادة تشغيل تطلب تسجيل دخول عبر المتصفح، فاحفظها في مخزن token.
  • استخدام محادثة واحدة لكل الزبائن. اجعل ذاكرة الوكيل مرتبطة برقم المرسل.
إنجاز ذلك باستخدام EasyCoexistence

اربط الرقم في easycoexistence.com، واضبط وجهة webhook على مسارك، وحمّل أدوات MCP في الوكيل بتسجيل دخول OAuth واحد. من US$ 9 لكل رقم شهرياً، وتنخفض حتى US$ 1 مع زيادة عدد الأرقام، مع أول 3 أيام مجاناً.

الأسئلة الشائعة

هل هذا لـ Python فقط؟

مثال MCPAdapter بلغة Python. أما webhook وCloud API فهما HTTP عادي، فأي لغة يعمل بها LangChain يمكنها الاستقبال والإرسال.

هل يحتاج الوكيل إلى list_numbers في كل مرة؟

يحتاج إلى connection_id، وlist_numbers هو المكان الوحيد الذي يأتي منه. مع رقم واحد يستدعيه الوكيل مرة واحدة في البداية.

هل يستطيع الفريق الرد من الهاتف؟

نعم. تُبقي Coexistence تطبيق WhatsApp Business يعمل، وتصل ردود الهاتف إلى مسارك كأحداث echo يمكن للوكيل أخذها في الحسبان.

هل تقرأ EasyCoexistence المحادثة؟

لا. تسلّم Meta مباشرة إلى مسارك ولا يُخزَّن محتوى الرسائل لدينا أبداً. تقرأ أدوات MCP حالة الحساب والرقم.

تابع القراءة

هل أنت مستعد للبدء؟

أعد إعداد WhatsApp Coexistence خلال دقائق، وليس أشهر. يواصل التطبيق العمل على الهاتف.

ابدأ الفترة التجريبية المجانية

تم التحقق في

وكيل LangChain على WhatsApp عبر Cloud API