فرض کنید سرویس شما درخواست ارسال پیام را ثبت کرده اما پیش از دریافت پاسخ، اتصال شبکه قطع میشود. از دید برنامه شما نتیجه روشن نیست، در حالی که سرویس پیامکی ممکن است درخواست را پذیرفته باشد. تلاش مجدد با یک درخواست تازه میتواند پیام را تکرار کند.
یک کلید برای یک رویداد
برای هر رویداد کسبوکار یک Idempotency-Key منحصربهفرد بسازید. مثلاً برای اعلان یک سفارش، ترکیبی از شناسه سفارش و نوع اعلان انتخاب کنید. این کلید را در پایگاه داده برنامه خود نگه دارید و در تلاش مجدد همان درخواست، همان کلید را بفرستید.
بدنه را تغییر ندهید
اگر یک کلید با شماره گیرنده یا متغیرهای متفاوت ارسال شود، NextSMS خطای تعارض میدهد. این رفتار جلوی استفاده تصادفی یک کلید برای دو رویداد مختلف را میگیرد. درخواست جدید به کلید جدید نیاز دارد؛ تلاش مجدد همان رویداد به همان کلید قبلی.
نتیجه نامشخص را جدی بگیرید
اگر وضعیت پیام unknown باشد، ممکن است پیام در اپراتور پذیرفته شده باشد. برای دور زدن این وضعیت، کلید تازه تولید نکنید. شناسه درخواست را نگه دارید و از پنل یا پشتیبانی پیگیری کنید.
کلید API و کلید تکرار متفاوتاند
کلید API هویت حساب شما را مشخص میکند و باید محرمانه بماند. کلید تکرار، یک رویداد مشخص را از رویدادهای دیگر جدا میکند. این دو مفهوم را در کد و تنظیمات برنامه جدا نگه دارید.