تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
كما هو موضّح في تعريف الإجراءات، عندما يتفاعل مستخدم مع "إجراء داخل التطبيق"، ترسل Google طلب HTTP إلى عنوان URL تم تعريفه في الإجراء.
يضيف المثال التالي زر ConfirmAction إلى رسالة إلكترونية حول تقرير نفقات:
JSON-LD
<scripttype="application/ld+json">
{"@context":"http://schema.org","@type":"EmailMessage","potentialAction":{"@type":"ConfirmAction","name":"Approve Expense","handler":{"@type":"HttpActionHandler","url":"https://myexpenses.com/approve?expenseId=abc123"}},"description":"Approval request for John's $10.13 expense for office supplies"}
</script>
البيانات الجزئية
<divitemscopeitemtype="http://schema.org/EmailMessage">
<divitemprop="potentialAction"itemscopeitemtype="http://schema.org/ConfirmAction">
<metaitemprop="name"content="Approve Expense"/>
<divitemprop="handler"itemscopeitemtype="http://schema.org/HttpActionHandler">
<linkitemprop="url"href="https://myexpenses.com/approve?expenseId=abc123"/>
</div>
</div>
<metaitemprop="description"content="Approval request for John's $10.13 expense for office supplies"/>
</div>
عندما ينقر المستخدم على الزر، سيتم إرسال طلب HTTP من Google إلى خدمتك لتسجيل التأكيد. تتلقّى خدمتك طلب HTTP التالي من Google:
POST/approve?expenseId=abc123HTTP/1.1Host:your-domain.comAuthorization:Bearer AbCdEf123456Content-Type:application/x-www-form-urlencodedUser-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/1.0 (KHTML, like Gecko; Gmail Actions)confirmed=Approved
يوضّح الجزء المتبقي من هذه الصفحة الإجراءات التي يجب أن تتّخذها الخدمة على https://your-domain.com/approve?expenseId=abc123 للتعامل مع الإجراء بشكلٍ سليم. يشمل ذلك ما يلي:
التحقّق من الطلب
معالجة الحمولة
عرض رمز استجابة
الخطوة 1: التحقّق من الطلب
ننصح الخدمة في https://your-domain.com/approve?expenseId=abc123 بالتحقّق مما يلي:
إنّ سلسلة وكيل المستخدم لجميع طلبات "الإجراء" هي Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/1.0 (KHTML, like Gecko; Gmail Actions).
إذا اجتازت الخدمة جميع عمليات التحقّق، يمكنها الانتقال إلى الخطوة التالية.
الخطوة 2: معالجة الإجراء
يجب أن تعالج الخدمة الإجراء على النحو المحدّد في مَعلمات عنوان URL بالإضافة إلى المعلومات الإضافية التي يتم جمعها من المستخدم.
تتضمّن بيانات الطلب معلومات إضافية من المستخدم، ويتم ترميزها باستخدام ترميز x-www-form-urlecoded. يتم ضبط المعلومات في سمات تتطابق أسماؤها مع سمات Action. على سبيل المثال، يحتوي النوع ConfirmAction على السمة confirmed.
الخطوة 3: عرض رمز استجابة
بعد أن تعالج الخدمة الإجراء وتسجّله بنجاح، من المفترض أن تعرض رمز الاستجابة 200 (OK). يمكن استخدام رموز الاستجابة التالية في حالات الخطأ:
رمز الاستجابة
المجموعة التجريبية
400 (طلب غير صالح)
سترفض Google تنفيذ الإجراء.
401 (غير مصرّح به)
سترفض Google تنفيذ الإجراء.
404 (لم يتم العثور عليها)
سترفض Google تنفيذ الإجراء.
408 (انتهت مهلة الطلب)
ستعيد Google المحاولة لاحقًا.
في حال حدوث خطأ دائم، ستُخبر Google المستخدم بأنّ الإجراء قد تعذّر وأنّه عليه اتّباع تعليمات بديلة داخل الرسالة الإلكترونية.
تاريخ التعديل الأخير: 2025-08-29 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-08-29 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Handle Action Requests\n\nAs described in [Declaring Actions](/workspace/gmail/markup/actions/declaring-actions), when a user interacts with an In-App Action, Google sends an HTTP request to a URL declared in the action.\n\nThe following example adds a `ConfirmAction` button to an email about an expense report: \n\n### JSON-LD\n\n \u003cscript type=\"application/ld+json\"\u003e\n {\n \"@context\": \"http://schema.org\",\n \"@type\": \"EmailMessage\",\n \"potentialAction\": {\n \"@type\": \"ConfirmAction\",\n \"name\": \"Approve Expense\",\n \"handler\": {\n \"@type\": \"HttpActionHandler\",\n \"url\": \"https://myexpenses.com/approve?expenseId=abc123\"\n }\n },\n \"description\": \"Approval request for John's $10.13 expense for office supplies\"\n }\n \u003c/script\u003e\n\n### Microdata\n\n \u003cdiv itemscope itemtype=\"http://schema.org/EmailMessage\"\u003e\n \u003cdiv itemprop=\"potentialAction\" itemscope itemtype=\"http://schema.org/ConfirmAction\"\u003e\n \u003cmeta itemprop=\"name\" content=\"Approve Expense\"/\u003e\n \u003cdiv itemprop=\"handler\" itemscope itemtype=\"http://schema.org/HttpActionHandler\"\u003e\n \u003clink itemprop=\"url\" href=\"https://myexpenses.com/approve?expenseId=abc123\"/\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003cmeta itemprop=\"description\" content=\"Approval request for John's $10.13 expense for office supplies\"/\u003e\n \u003c/div\u003e\n\nWhen the user clicks on the button, an HTTP request will be issued from Google to your service, recording the confirmation. Your service receives the following HTTP request from Google: \n\n POST /approve?expenseId=abc123 HTTP/1.1\n Host: your-domain.com\n Authorization: Bearer AbCdEf123456\n Content-Type: application/x-www-form-urlencoded\n User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/1.0 (KHTML, like Gecko; Gmail Actions)\n\n confirmed=Approved\n\nThe rest of this page describes what the service at `https://your-domain.com/approve?expenseId=abc123` needs to do to handle the action properly. This includes:\n\n- Verifying the request\n- Processing the payload\n- Returning a response code\n\nStep 1: Verify the Request\n--------------------------\n\nThe service at `https://your-domain.com/approve?expenseId=abc123` is encouraged to check:\n\n- [Limited Use Access Token](/workspace/gmail/markup/actions/limited-use-access-tokens) - To protect against replay attacks.\n- [User Agent](http://en.wikipedia.org/wiki/User_agent) - To make sure the request comes from Google.\n- [Bearer Token](/workspace/gmail/markup/actions/verifying-bearer-tokens) - To guarantee the request coming from Google is intended to the service.\n\nThe User Agent for all Action requests is `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/1.0 (KHTML, like Gecko; Gmail Actions)`.\n\nIf all checks pass, the service can proceed to the next step.\n\nStep 2: Process the Action\n--------------------------\n\nThe service should process the action as specified in the URL parameters as well as additional information collected from the user.\n\nAdditional information from the user resides in the request's body, and is encoded using the [x-www-form-urlecoded](https://en.wikipedia.org/wiki/Percent-encoding#The_application.2Fx-www-form-urlencoded_type) encoding. The information is set in properties whose names correspond with the properties of Action. For example, [ConfirmAction](/workspace/gmail/markup/reference/types/ConfirmAction) has the property `confirmed`.\n\nStep 3: Return a Response Code\n------------------------------\n\nOnce the service processed and recorded the action successfully, it should return a response code `200 (OK)`. The following response codes can be used in error situations:\n\n| Response Code | Treatment |\n|-----------------------|--------------------------------|\n| 400 (Bad Request) | Google will fail the action. |\n| 401 (Unauthorized) | Google will fail the action. |\n| 404 (Not Found) | Google will fail the action. |\n| 408 (Request Timeout) | Google will retry again later. |\n\nIn case of permanent failure, Google will tell the user that action has failed and that the user should follow alternative instructions inside the email.\n\nFurther Reading\n---------------\n\n- [Securing Actions](/workspace/gmail/markup/actions/securing-actions)\n\n| **Note:** Some of the schemas used by Google are still going through the standardization process of [schema.org](http://schema.org), and therefore, may change in the future. [Learn More](/workspace/gmail/markup/reference/schema-org-proposals)."]]