تحديد الإجراءات (Dialogflow)

الإجراءات هي نقاط دخول إلى تطبيقك تحدّد نموذج الاستدعاء والاكتشاف لتطبيقك. أنت تعلن عن "المهام" في ملف JSON يُعرف باسم حزمة الإجراءات التي يتم تحميلها لاحقًا إلى مشروع المطوِّر عندما تريد اختبار مشروع "المهام" أو إرساله للحصول على الموافقة. حزمة الإجراءات هي ملف JSON يحدد الإجراءات في مشروع الإجراءات.

لتحديد الإجراءات في حزمة الإجراءات، يجب إنشاء هدف يحدّد كيفية استدعاء الإجراء ونقطة النهاية المقابلة التي تم تنفيذها عند تشغيل الهدف. يمكنك إنشاء الأنواع التالية من الإجراءات:

  • الإجراء التلقائي: يجب أن يشتمل كل مشروع من مشاريع "المهام" على غرض ترحيبي يعمل كنقطة دخول للمستخدمين لبدء المحادثات. يتم عرض نية الترحيب عندما يستدعي المستخدمون الإجراء صراحةً من خلال نطق اسمه (على سبيل المثال، "Hey Google, talk to ExampleAction"). يتم تحديد نية الترحيب هذه باسم الغرض من actions.intent.MAIN.
  • إجراءات إضافية للربط بصفحات معيّنة: يمكنك إنشاء "إجراءات" إضافية في حزمة "الإجراءات" بهدف تحديدها بنفسك. ويتيح ذلك للمستخدمين استدعاء وظيفة معيّنة من خلال قول اسم الإجراء وهدفه (على سبيل المثال: "Hey Google, talk to ExampleAction to find some shoes").

راجِع الأغراض والاستدعاءات لمزيد من المعلومات عن آلية عمل نماذج الاستدعاء هذه.

تحديد إجراء تلقائي

يجب أن تحتوي كل حزمة إجراءات على غرض واحد فقط يعالج actions.intent.MAIN الغرض. يتم تشغيل هذا الهدف عندما يستدعي المستخدمون الإجراء بالاسم (على سبيل المثال، "Hey Google, talk to ExampleAction").

لإنشاء ملف حزمة إجراءات نموذجية اسمه action.json، اتّبِع الخطوات التالية:

  1. نزِّل واجهة سطر الأوامر gactions.
  2. أنشئ دليلاً محليًا للملفات المصدر في مشروع الإجراء الخاص بك.
  3. شغِّل الأوامر التالية في الوحدة الطرفية:

    $ cd PROJECT_DIRECTORY
    $ gactions init

بمجرد إنشاء ملف "حزمة الإجراءات"، استبدل محتوى العنصر النائب بقيمك. إليك مثال على action.json يتضمن تغييرات على ExampleAction:

{
  "actions": [
    {
      "description": "Default welcome intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "actions.intent.MAIN",
        "trigger": {
          "queryPatterns": [
            "talk to ExampleAction"
          ]
        }
      }
    }
  ],
  "conversations": {
    "ExampleAction": {
      "name": "ExampleAction",
      "url": "https://www.example.com/ExampleAction"
    }
  },
  "locale": "en"
}

تحديد إجراءات إضافية

يمكنك تقديم إجراءات إضافية تكون بمثابة نقاط دخول. يتيح ذلك للمستخدمين توضيح هدفهم من خلال السماح لهم بتحديد المزيد من التفاصيل حول ما يريدون تنفيذه (على سبيل المثال، "Ok Google، أريد التحدّث إلى ExampleAction للعثور على بعض الأحذية").

لتحديد إجراءات إضافية:

  1. في مصفوفة actions، حدِّد إجراءً لكل نقطة دخول.

    على سبيل المثال، يعرض الرمز التالي إجراء "شراء" إضافي يُعرِّف ما يلي:
    • اسم الغرض من النطاق com.example.ExampleAction.BUY
    • parameters للتحليل من البيانات التي أدخلها المستخدم عند تفعيل هذا الغرض. ويكون هذا مفيدًا إذا كنت بحاجة إلى بيانات محدّدة من عبارة "الإجراء" عند استدعاء المستخدمين للإجراء.
    • queryPatterns التي تحدِّد ما يجب أن يقوله المستخدمون لتفعيل الهدف. يمكن أن تتضمّن أنماط طلب البحث أنواع Schema.org التي تحدّد المعلَمات المطلوب تحليلها.
    {
      "description": "Direct access",
      "name": "BUY",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "com.example.ExampleAction.BUY",
        "parameters": [
          {
            "name": "color",
            "type": "org.schema.type.Color"
          }
        ],
        "trigger": {
          "queryPatterns": [
            "find some $org.schema.type.Color:color sneakers",
            "buy some blue suede shoes",
            "get running shoes"
          ]
        }
      }
    }
          
  2. حدِّد طريقة التنفيذ لهذا الغرض من خلال تحديد سمة conversationName يقابل عنصرها عنصر في الكائن conversations.

    {
      "conversations": {
        "ExampleAction": {
          "name": "ExampleAction",
          "url": "https://www.example.com/ExampleAction"
        }
      }
    }
        

في ما يلي مثال على حزمة إجراءات كاملة:

{
  "actions": [
    {
      "description": "Default welcome intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "actions.intent.MAIN",
        "trigger": {
          "queryPatterns": [
            "talk to ExampleAction"
          ]
        }
      }
    },
    {
      "description": "Direct access",
      "name": "BUY",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "com.example.ExampleAction.BUY",
        "parameters": [
          {
            "name": "color",
            "type": "org.schema.type.Color"
          }
        ],
        "trigger": {
          "queryPatterns": [
            "find some $org.schema.type.Color:color sneakers",
            "buy some blue suede shoes",
            "get running shoes"
          ]
        }
      }
    }
  ],
  "conversations": {
    "ExampleAction": {
      "name": "ExampleAction",
      "url": "https://www.example.com/ExampleAction"
    }
  },
  "locale": "en"
}