رزرو بسازید

این راهنما شما را در فرآیند توسعه یک پروژه Actions راهنمایی می کند که از Orders API برای رزرو کردن استفاده می کند.

جریان تراکنش

وقتی پروژه Actions شما رزروها را مدیریت می کند، از جریان زیر استفاده می کند:

  1. اعتبارسنجی الزامات تراکنش (اختیاری) - از کمک کننده الزامات تراکنش ها در شروع مکالمه استفاده کنید تا مطمئن شوید کاربر قادر به انجام تراکنش است.
  2. سفارش را بسازید - کاربر را از طریق "مجموعه سبد خرید" که در آن جزئیات رزرو خود را ایجاد می کند، راهنمایی کنید.
  3. پیشنهاد سفارش - پس از تکمیل "سبد"، "سفارش" رزرو را به کاربر پیشنهاد دهید تا بتواند صحت آن را تایید کند. در صورت تایید رزرو، پاسخی با جزئیات رزرو دریافت خواهید کرد.
  4. نهایی کردن سفارش و ارسال رسید - با تایید سفارش، سیستم رزرو خود را به روز کنید و رسید را برای کاربر ارسال کنید.
  5. ارسال به‌روزرسانی‌های سفارش - در طول عمر رزرو، با ارسال درخواست‌های PATCH به Orders API به‌روزرسانی‌های وضعیت رزرو را به کاربر ارائه دهید.

محدودیت ها و دستورالعمل های بازبینی

به خاطر داشته باشید که خط‌مشی‌های اضافی برای اقداماتی اعمال می‌شود که از تراکنش‌ها و API سفارش‌ها استفاده می‌کنند. بررسی Actions با تراکنش‌ها می‌تواند تا شش هفته طول بکشد، بنابراین هنگام برنامه‌ریزی زمان‌بندی انتشار، آن زمان را در نظر بگیرید. برای تسهیل روند بازبینی، قبل از ارسال Action برای بررسی، مطمئن شوید که از خط‌مشی‌ها و دستورالعمل‌های تراکنش‌ها پیروی می‌کنید.

فقط می‌توانید اقداماتی را که از Orders API استفاده می‌کنند در کشورهای زیر مستقر کنید:

استرالیا
برزیل
کانادا
اندونزی
ژاپن
مکزیک
قطر
روسیه
سنگاپور
سوئیس
تایلند
بوقلمون
انگلستان
ایالات متحده

پروژه خود را بسازید

برای مثال گسترده ای از مکالمات تراکنشی، نمونه تراکنش های ما را در Node.js مشاهده کنید.

برپایی

هنگام ایجاد Action خود، باید مشخص کنید که می‌خواهید تراکنش‌ها را در کنسول Actions انجام دهید.

برای تنظیم پروژه و اجرای خود، موارد زیر را انجام دهید:

  1. یک پروژه جدید ایجاد کنید یا یک پروژه موجود را وارد کنید.
  2. به Deploy > Directory information بروید.
  3. در قسمت اطلاعات اضافی > تراکنش‌ها > کادری را علامت بزنید که می‌گوید «آیا اقدامات شما از API تراکنش‌ها برای انجام تراکنش‌های کالاهای فیزیکی استفاده می‌کند؟».

اعتبارسنجی الزامات تراکنش (اختیاری)

به محض اینکه کاربر اعلام کرد که مایل به تنظیم رزرو است، باید بررسی کنید که آیا می‌تواند درخواست رزرو کند. برای مثال، هنگام فراخوانی، Action شما ممکن است بپرسد: "آیا می‌خواهید یک صندلی رزرو کنید؟" اگر کاربر «بله» گفت، باید اطمینان حاصل کنید که می‌تواند ادامه دهد و به او فرصتی بدهید تا تنظیماتی را که مانع از ادامه تراکنش می‌شود، اصلاح کند. برای انجام این کار، باید به صحنه ای بروید که بررسی الزامات تراکنش را انجام می دهد.

ایجاد صحنه بررسی الزامات معامله

  1. از تب Scenes ، یک صحنه جدید با نام TransactionRequirementsCheck اضافه کنید.
  2. در قسمت Slot filling ، روی + کلیک کنید تا یک اسلات جدید اضافه کنید.
  3. در قسمت Select type ، actions.type.TransactionRequirementsCheckResult به عنوان نوع اسلات انتخاب کنید.
  4. در فیلد نام اسلات، نام اسلات را TransactionRequirementsCheck قرار دهید.
  5. کادر بررسی بازنویسی مقدار اسلات سفارشی را فعال کنید (به طور پیش فرض فعال است).
  6. روی ذخیره کلیک کنید.

بررسی الزامات معامله منجر به یکی از نتایج زیر می شود:

  • در صورت برآورده شدن شرایط، پارامتر جلسه با شرط موفقیت تنظیم می شود و می توانید به ساخت سفارش کاربر ادامه دهید.
  • اگر یک یا چند مورد از الزامات برآورده نشود، پارامتر جلسه با یک شرط شکست تنظیم می شود. در این مورد، باید مکالمه را از تجربه تراکنش دور کنید یا مکالمه را پایان دهید.
    • اگر هر گونه خطایی که منجر به وضعیت خرابی می شود توسط کاربر برطرف شود، از آنها خواسته می شود تا آن مشکلات را در دستگاه خود حل کنند. اگر مکالمه روی یک سطح فقط صوتی انجام شود، یک انتقال به تلفن کاربر آغاز می شود.

رسیدگی به الزامات تراکنش نتایج را بررسی کنید

  1. از تب Scenes ، صحنه تازه ایجاد شده TransactionRequirementsCheck خود را انتخاب کنید.
  2. در قسمت Condition ، روی + کلیک کنید تا یک شرط جدید اضافه کنید.
  3. در قسمت متن، دستور شرط زیر را وارد کنید تا شرایط موفقیت را بررسی کنید:

    scene.slots.status == "FINAL" && session.params.TransactionRequirementsCheck.resultType == "CAN_TRANSACT"
    
  4. نشانگر خود را روی شرطی که به تازگی اضافه کرده اید نگه دارید و روی فلش بالا کلیک کنید تا آن را قبل از قرار دهید if scene.slots.status == "FINAL" .

  5. دستورهای ارسال را فعال کنید و یک اعلان ساده ارائه دهید تا کاربر بداند که آماده انجام معامله است:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Looks like you're good to go!.
    
  6. در بخش Transition صحنه دیگری را انتخاب کنید، که به کاربر اجازه می دهد مکالمه را ادامه دهد و تراکنش را انجام دهد.

  7. شرط else if scene.slots.status == "FINAL" .

  8. دستورهای ارسال را فعال کنید و یک اعلان ساده ارائه دهید تا کاربر بداند قادر به انجام تراکنش نیست:

    candidates:
      - first_simple:
          variants:
            - speech: Transaction requirements check failed.
    
  9. در بخش انتقال ، پایان مکالمه را انتخاب کنید تا اگر کاربر قادر به انجام تراکنش نیست، به مکالمه پایان دهید.

نظم را بسازید

هنگامی که اطلاعات کاربری مورد نیاز خود را به دست آوردید، یک تجربه "مونتاژ سبد خرید" بسازید که کاربر را برای رزرو خود راهنمایی می کند. هر Action یک جریان مونتاژ سبد خرید متناسب با خدمات خود کمی متفاوت خواهد داشت.

در یک تجربه مونتاژ اولیه سبد خرید، کاربر گزینه‌هایی را از فهرست انتخاب می‌کند تا به رزرو خود اضافه کند، اگرچه می‌توانید مکالمه را برای ساده‌سازی تجربه کاربر طراحی کنید. به عنوان مثال، یک تجربه مونتاژ سبد خرید بسازید که کاربر را قادر می‌سازد تا با یک سوال بله یا خیر، یک رزرو ماهانه را برنامه‌ریزی کند. همچنین می توانید یک چرخ فلک یا کارت لیست رزروهای "توصیه شده" را به کاربر ارائه دهید.

توصیه می کنیم از پاسخ های غنی برای ارائه گزینه های کاربر به صورت بصری استفاده کنید، اما مکالمه را نیز طوری طراحی کنید که کاربر بتواند تنها با استفاده از صدای خود سبد خرید خود را بسازد. برای برخی از بهترین شیوه ها و نمونه هایی از تجربیات مونتاژ گاری، به دستورالعمل های طراحی مراجعه کنید.

یک سفارش ایجاد کنید

در طول مکالمه خود، جزئیات رزرو کاربر را جمع آوری کنید و سپس یک شی Order بسازید.

حداقل، Order شما باید حاوی موارد زیر باشد:

  • buyerInfo - اطلاعاتی در مورد کاربری که خرید می کند.
  • transactionMerchant - اطلاعاتی در مورد تاجری که سفارش را تسهیل کرده است.
  • contents - محتویات واقعی سفارش که به عنوان lineItems فهرست شده است.

برای ساخت سبد خرید خود به مستندات پاسخ Order مراجعه کنید. توجه داشته باشید که بسته به رزرو ممکن است لازم باشد فیلدهای مختلفی را وارد کنید.

کد نمونه زیر یک سفارش رزرو کامل شامل فیلدهای اختیاری را نشان می دهد:

const order = {
   createTime: '2019-09-24T18:00:00.877Z',
   lastUpdateTime: '2019-09-24T18:00:00.877Z',
   merchantOrderId: orderId, // A unique ID String for the order
   userVisibleOrderId: orderId,
   transactionMerchant: {
     id: 'http://www.example.com',
     name: 'Example Merchant',
   },
   contents: {
     lineItems: [
       {
         id: 'LINE_ITEM_ID',
         name: 'Dinner reservation',
         description: 'A world of flavors all in one destination.',
         reservation: {
           status: 'PENDING',
           userVisibleStatusLabel: 'Reservation is pending.',
           type: 'RESTAURANT',
           reservationTime: {
             timeIso8601: '2020-01-16T01:30:15.01Z',
           },
           userAcceptableTimeRange: {
             timeIso8601: '2020-01-15/2020-01-17',
           },
           partySize: 6,
           staffFacilitators: [
             {
               name: 'John Smith',
             },
           ],
           location: {
             zipCode: '94086',
             city: 'Sunnyvale',
             postalAddress: {
               regionCode: 'US',
               postalCode: '94086',
               administrativeArea: 'CA',
               locality: 'Sunnyvale',
               addressLines: [
                 '222, Some other Street',
               ],
             },
           },
         },
       },
     ],
   },
   buyerInfo: {
     email: 'janedoe@gmail.com',
     firstName: 'Jane',
     lastName: 'Doe',
     displayName: 'Jane Doe',
   },
   followUpActions: [
     {
       type: 'VIEW_DETAILS',
       title: 'View details',
       openUrlAction: {
         url: 'http://example.com',
       },
     },
     {
       type: 'CALL',
       title: 'Call us',
       openUrlAction: {
         url: 'tel:+16501112222',
       },
     },
     {
       type: 'EMAIL',
       title: 'Email us',
       openUrlAction: {
         url: 'mailto:person@example.com',
       },
     },
   ],
   termsOfServiceUrl: 'http://www.example.com'
 };

گزینه های سفارش و ارائه را ایجاد کنید

const orderOptions = {
      'requestDeliveryAddress': false,
    };

const presentationOptions = {
      'actionDisplayName': 'RESERVE'
    };

داده های سفارش را در پارامتر جلسه ذخیره کنید

از انجام خود، داده های سفارش را در یک پارامتر جلسه ذخیره کنید. شی سفارش در سراسر صحنه ها برای همان جلسه استفاده خواهد شد.

conv.session.params.order = {
    '@type': 'type.googleapis.com/google.actions.transactions.v3.TransactionDecisionValueSpec',
    order: order,
    orderOptions: orderOptions,
    presentationOptions: presentationOptions
};

سفارش را پیشنهاد دهید

پس از ایجاد یک سفارش رزرو، باید آن را به کاربر ارائه دهید تا تأیید یا رد شود. برای انجام این کار، باید به صحنه ای بروید که تصمیم تراکنش را انجام می دهد.

صحنه تصمیم معامله را ایجاد کنید

  1. از تب Scenes ، یک صحنه جدید با نام TransactionDecision اضافه کنید.
  2. در قسمت Slot filling ، روی + کلیک کنید تا یک اسلات جدید اضافه کنید.
  3. در قسمت Select type ، actions.type.TransactionDecisionValue به عنوان نوع اسلات انتخاب کنید.
  4. در فیلد نام اسلات، نام TransactionDecision را به اسلات بدهید.
  5. کادر بررسی بازنویسی مقدار اسلات سفارشی را فعال کنید (به طور پیش فرض فعال است).
  6. در قسمت پیکربندی شکاف ، از منوی کشویی استفاده از پارامتر جلسه را انتخاب کنید.
  7. در قسمت پیکربندی شکاف، نام پارامتر جلسه مورد استفاده برای ذخیره سفارش را در فیلد متنی وارد کنید (یعنی $session.params.order ).
  8. روی ذخیره کلیک کنید.

در تلاش برای پر کردن شکاف TransactionDecisionValue ، دستیار یک تجربه داخلی را آغاز می‌کند که در آن Order که شما ارسال کرده‌اید مستقیماً روی یک «کارت پیش‌نمایش سبد خرید» ارائه می‌شود. کاربر می‌تواند بگوید «رزرو برنامه‌ریزی کن»، تراکنش را رد کند یا درخواست تغییر جزئیات رزرو کند.

کاربر همچنین ممکن است در این مرحله درخواست تغییر در سفارش را داشته باشد. در این مورد، باید مطمئن شوید که انجام شما می‌تواند درخواست‌های تغییر سفارش را پس از اتمام تجربه مونتاژ سبد خرید انجام دهد.

رسیدگی به نتیجه تصمیم معامله

هنگامی که یک اسلات TransactionDecisionValue پر می شود، پاسخ کاربر به تصمیم تراکنش در یک پارامتر جلسه ذخیره می شود. این مقدار شامل موارد زیر است:

  • ORDER_ACCEPTED ،
  • ORDER_REJECTED ،
  • CART_CHANGE_REQUESTED
  • USER_CANNOT_TRANSACT .

برای رسیدگی به نتیجه تصمیم تراکنش:

  1. از تب Scenes ، صحنه TransactionDecision تازه ایجاد شده خود را انتخاب کنید.
  2. در قسمت Condition ، روی + کلیک کنید تا یک شرط جدید اضافه کنید.
  3. در قسمت متن، دستور شرط زیر را وارد کنید تا شرایط موفقیت را بررسی کنید:

    scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_ACCEPTED"
    
  4. نشانگر خود را روی شرطی که به تازگی اضافه کرده اید نگه دارید و روی فلش بالا کلیک کنید تا آن را قبل از قرار دهید if scene.slots.status == "FINAL" .

  5. درخواست‌های ارسال را فعال کنید و یک اعلان ساده ارائه دهید تا کاربر بداند رزروش تکمیل شده است:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Transaction completed! Your reservation
                $session.params.TransactionDecision.order.merchantOrderId is all
                set!
    
  6. در بخش انتقال، پایان مکالمه را انتخاب کنید تا مکالمه پایان یابد.

  7. در قسمت Condition ، روی + کلیک کنید تا یک شرط جدید اضافه کنید.

  8. در قسمت متن، دستور شرط زیر را برای بررسی شرایط خرابی وارد کنید:

      scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_REJECTED"
    
  9. نشانگر خود را روی شرطی که به تازگی اضافه کرده اید نگه دارید و روی فلش بالا کلیک کنید تا آن را قبل از قرار دهید if scene.slots.status == "FINAL" .

  10. درخواست‌های ارسال را فعال کنید و یک فرمان ساده ارائه دهید تا کاربر متوجه شود سفارش رد شده است:

    candidates:
      - first_simple:
          variants:
            - speech: Looks like you don't want to set up a reservation. Goodbye.
    
  11. در بخش انتقال، پایان مکالمه را انتخاب کنید تا مکالمه پایان یابد.

  12. شرط else if scene.slots.status == "FINAL" .

  13. دستورهای ارسال را فعال کنید و یک اعلان ساده ارائه دهید تا کاربر بداند قادر به انجام تراکنش نیست:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Transaction failed with status
                $session.params.TransactionDecision.transactionDecision
    
  14. در بخش انتقال ، پایان مکالمه را انتخاب کنید تا اگر کاربر قادر به انجام تراکنش نیست، به مکالمه پایان دهید.

رزرو را نهایی کنید و رسید ارسال کنید

هنگامی که اسلات TransactionDecisionValue نتیجه ORDER_ACCEPTED را برمی گرداند، باید فوراً هر پردازشی را که برای برنامه ریزی رزرو لازم است انجام دهید (مانند حفظ آن در پایگاه داده خود).

برای ادامه مکالمه یک پاسخ ساده ارسال کنید. کاربر یک "کارت رسید جمع شده" را همراه با پاسخ شما دریافت می کند.

برای ارسال به‌روزرسانی سفارش اولیه:

  1. از تب Scenes ، صحنه TransactionDecision خود را انتخاب کنید.
  2. در شرایط ، شرطی را انتخاب کنید که نتیجه موفقیت آمیز را بررسی می کند، ORDER_ACCEPTED :

    scene.slots.status == "FINAL" && session.params.TransactionDecision.transactionDecision == "ORDER_ACCEPTED"
    
  3. برای این شرایط، Call your webhook را فعال کنید و یک نام کنترل کننده قصد، مانند update_order ارائه کنید.

  4. در کد وب هوک خود، یک کنترل کننده قصد برای ارسال به‌روزرسانی سفارش اولیه اضافه کنید:

    app.handle('update_order', conv => {
      const currentTime = new Date().toISOString();
      let order = conv.session.params.TransactionDecision.order;
      conv.add(new OrderUpdate({
        'updateMask': {
          'paths': [
            'reservation.status',
            'reservation.user_visible_status_label',
            'reservation.confirmation_code'
          ]
        },
        'order': {
          'merchantOrderId': order.merchantOrderId,
          'lastUpdateTime': currentTime,
          'reservation': {
            'status': 'CONFIRMED',
            'userVisibleStatusLabel': 'Reservation confirmed',
            'confirmationCode': '123ABCDEFGXYZ',
          },
        },
        'reason': 'Reason string'
      }));
    });
    

ارسال به روز رسانی سفارش

وضعیت رزرو در طول عمر آن تغییر می کند. به‌روزرسانی‌های سفارش رزرو کاربر را با درخواست‌های HTTP PATCH به Orders API ارسال کنید که شامل وضعیت سفارش و جزئیات است.

درخواست های ناهمزمان را در Orders API تنظیم کنید

درخواست‌های به‌روزرسانی سفارش به Orders API توسط یک نشانه دسترسی مجاز است. برای وصله به‌روزرسانی سفارش در Orders API، یک کلید حساب سرویس JSON مرتبط با پروژه Actions Console خود را دانلود کنید، سپس کلید حساب سرویس را با یک توکن حامل که می‌تواند به سرصفحه Authorization درخواست HTTP منتقل شود، مبادله کنید.

برای بازیابی کلید حساب سرویس خود، مراحل زیر را انجام دهید:

  1. در کنسول Google Cloud ، به منو ☰ > APIs & Services > Credentials > Create credentials > Service key account بروید.
  2. در قسمت Service Account ، New Service Account را انتخاب کنید.
  3. حساب سرویس را روی service-account تنظیم کنید.
  4. Role را روی Project > Owner تنظیم کنید.
  5. نوع کلید را روی JSON تنظیم کنید.
  6. ایجاد را انتخاب کنید.
  7. یک کلید حساب سرویس JSON خصوصی در دستگاه محلی شما دانلود می شود.

در کد به‌روزرسانی‌های سفارش، کلید خدمات خود را با یک توکن حامل با استفاده از کتابخانه سرویس گیرنده Google APIs و محدوده «https://www.googleapis.com/auth/actions.order.developer» تعویض کنید. می‌توانید مراحل و نمونه‌های نصب را در صفحه GitHub کتابخانه سرویس گیرنده API پیدا کنید.

مرجع order-update.js در نمونه Node.js ما برای تبادل کلید نمونه.

ارسال به روز رسانی سفارش

هنگامی که کلید حساب سرویس خود را با یک توکن حامل OAuth مبادله کردید، به‌روزرسانی‌های سفارش را به عنوان درخواست‌های PATCH مجاز به Orders API ارسال کنید.

URL API سفارشات: PATCH https://actions.googleapis.com/v3/orders/${orderId}

سرفصل های زیر را در درخواست خود وارد کنید:

  • "Authorization: Bearer token" با نماد حامل OAuth که کلید حساب سرویس خود را با آن مبادله کرده اید.
  • "Content-Type: application/json" .

درخواست PATCH باید بدنه JSON با فرمت زیر داشته باشد:

{ "orderUpdate": OrderUpdate }

شی OrderUpdate از فیلدهای سطح بالای زیر تشکیل شده است:

  • updateMask - فیلدهای سفارشی که در حال به روز رسانی هستید. برای به‌روزرسانی وضعیت رزرو، مقدار را روی reservation.status, reservation.userVisibleStatusLabel تنظیم کنید.
  • order - محتویات به روز رسانی. اگر محتوای رزرو را به‌روزرسانی می‌کنید، مقدار را روی شی به‌روزرسانی شده Order تنظیم کنید. اگر فقط وضعیت رزرو را به‌روزرسانی می‌کنید (به عنوان مثال، از "PENDING" به "FULFILLED" )، شی حاوی فیلدهای زیر است:

    • merchantOrderId - همان شناسه ای که در شیء Order خود تنظیم کرده اید.
    • lastUpdateTime - مهر زمانی این به روز رسانی.
    • purchase - یک شی حاوی موارد زیر:
      • status - وضعیت سفارش به عنوان ReservationStatus ، مانند " CONFIRMED " یا " CANCELLED ".
      • userVisibleStatusLabel - یک برچسب رو به روی کاربر که جزئیات وضعیت سفارش را ارائه می دهد، مانند "رزرو شما تایید شد".
  • userNotification (اختیاری) - یک شی userNotification که می تواند هنگام ارسال این به روز رسانی در دستگاه کاربر نمایش داده شود. توجه داشته باشید که گنجاندن این شیء تضمین نمی کند که یک اعلان در دستگاه کاربر ظاهر شود.

کد نمونه زیر نمونه ای OrderUpdate را نشان می دهد که وضعیت سفارش رزرو را به FULFILLED به روز می کند:

// Import the 'googleapis' module for authorizing the request.
const {google} = require('googleapis');
// Import the 'request-promise' module for sending an HTTP POST request.
const request = require('request-promise');
// Import the OrderUpdate class from the client library.
const {OrderUpdate} = require('@assistant/conversation');

// Import the service account key used to authorize the request.
// Replacing the string path with a path to your service account key.
// i.e. const serviceAccountKey = require('./service-account.json')

// Create a new JWT client for the Actions API using credentials
// from the service account key.
let jwtClient = new google.auth.JWT(
   serviceAccountKey.client_email,
   null,
   serviceAccountKey.private_key,
   ['https://www.googleapis.com/auth/actions.order.developer'],
   null,
);

// Authorize the client
let tokens = await jwtClient.authorize();

// Declare the ID of the order to update.
const orderId = '<UNIQUE_MERCHANT_ORDER_ID>';

// Declare order update
const orderUpdate = new OrderUpdate({
   updateMask: {
     paths: [
       'contents.lineItems.reservation.status',
       'contents.lineItems.reservation.userVisibleStatusLabel'
     ]
   },
   order: {
     merchantOrderId: orderId, // Specify the ID of the order to update
     lastUpdateTime: new Date().toISOString(),
     contents: {
       lineItems: [
         {
           reservation: {
             status: 'FULFILLED',
             userVisibleStatusLabel: 'Reservation fulfilled',
           },
         }
       ]
     },
   },
   reason: 'Reservation status was updated to fulfilled.',
});

// Set up the PATCH request header and body,
// including the authorized token and order update.
let options = {
 method: 'PATCH',
 uri: `https://actions.googleapis.com/v3/orders/${orderId}`,
 auth: {
   bearer: tokens.access_token,
 },
 body: {
   header: {
     isInSandbox: true,
   },
   orderUpdate,
 },
 json: true,
};

// Send the PATCH request to the Orders API.
try {
 await request(options);
} catch (e) {
 console.log(`Error: ${e}`);
}

وضعیت رزرو را تنظیم کنید

ReservationStatus سفارش باید توصیفی از وضعیت فعلی سفارش باشد. در قسمت order.ReservationStatus به‌روزرسانی خود، از یکی از مقادیر زیر استفاده کنید:

  • PENDING - رزرو توسط Action شما "ایجاد" شده است، اما نیاز به پردازش اضافی در پشتیبان شما دارد.
  • CONFIRMED - رزرو در برنامه ریزی شما تایید شد.
  • CANCELLED - کاربر رزرو خود را لغو کرد.
  • FULFILLED - رزرو کاربر توسط سرویس انجام شد.
  • CHANGE_REQUESTED - کاربر درخواست تغییر در رزرو کرده است و تغییر در حال پردازش است.
  • REJECTED - اگر نتوانستید رزرو را پردازش یا تأیید کنید.

به‌روزرسانی‌های سفارش را برای هر وضعیتی که مربوط به رزرو شما است ارسال کنید. به عنوان مثال، اگر رزرو شما نیاز به پردازش دستی برای تأیید رزرو پس از درخواست دارد، یک به‌روزرسانی سفارش PENDING ارسال کنید تا پردازش اضافی انجام شود. هر رزروی به هر مقدار وضعیت نیاز ندارد.

پروژه خود را تست کنید

هنگام آزمایش پروژه خود، می‌توانید حالت sandbox را در کنسول Actions فعال کنید تا Action خود را بدون پرداخت هزینه از روش پرداخت آزمایش کنید. برای فعال کردن حالت جعبه ایمنی، مراحل زیر را دنبال کنید:

  1. در کنسول Actions، روی Test در ناوبری کلیک کنید.
  2. روی تنظیمات کلیک کنید.
  3. گزینه Development Sandbox را فعال کنید.

برای تراکنش های فیزیکی، می توانید فیلد isInSandbox نیز در نمونه خود روی true تنظیم کنید. این عمل معادل فعال کردن تنظیمات حالت sandbox در کنسول Actions است. برای دیدن قطعه کدی که از isInSandbox استفاده می کند، به بخش ارسال به روز رسانی سفارش مراجعه کنید.

عیب یابی

اگر در طول آزمایش با مشکلی مواجه شدید، مراحل عیب‌یابی تراکنش‌ها را بخوانید.