voip announcement
This commit is contained in:
1 parent
38b1cf06df
commit
c7993aae44
18 files changed
+679
-151
No files matched your search
@@ -70,3 +70,49 @@ class NotificationJob(models.Model):
|
||||
)
|
||||
class Meta:
|
||||
indexes=[models.Index(fields=["status","next_attempt_at"],name="notif_due_idx"),models.Index(fields=["ticket","channel","status"],name="notif_ticket_chan_idx")]
|
||||
|
||||
|
||||
class AnnouncementJob(models.Model):
|
||||
"""One durable call reminder for each public message written by staff."""
|
||||
class Status(models.TextChoices):
|
||||
PENDING = "PENDING", "در صف"
|
||||
PROCESSING = "PROCESSING", "در حال تماس"
|
||||
SENT = "SENT", "ارسالشده"
|
||||
FAILED = "FAILED", "ناموفق"
|
||||
CANCELLED = "CANCELLED", "لغوشده"
|
||||
|
||||
message = models.OneToOneField("messaging.Message", on_delete=models.CASCADE, related_name="announcement_job")
|
||||
status = models.CharField(max_length=15, choices=Status.choices, default=Status.PENDING, db_index=True)
|
||||
attempts = models.PositiveSmallIntegerField(default=0)
|
||||
next_attempt_at = models.DateTimeField(db_index=True)
|
||||
idempotency_key = models.CharField(max_length=100, unique=True)
|
||||
last_error = models.TextField(blank=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
sent_at = models.DateTimeField(null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
indexes = [models.Index(fields=["status", "next_attempt_at"], name="announce_due_idx")]
|
||||
|
||||
@property
|
||||
def status_label(self):
|
||||
if self.status == self.Status.SENT:
|
||||
return "درخواست تماس پذیرفته شد"
|
||||
if self.status == self.Status.PENDING and self.attempts:
|
||||
return "در انتظار تلاش مجدد"
|
||||
return self.get_status_display()
|
||||
|
||||
@property
|
||||
def detail_label(self):
|
||||
return {
|
||||
"customer_read": "مشتری پیام را مشاهده کرد.",
|
||||
"customer_replied": "مشتری پس از پیام پاسخ داد.",
|
||||
"message_unavailable": "پیام برای اطلاعرسانی در دسترس نیست.",
|
||||
"customer_mobile_unavailable": "شماره همراه مشتری در دسترس نیست.",
|
||||
"announcement_not_configured": "تنظیمات تماس اطلاعرسانی کامل نیست.",
|
||||
"service_timeout": "سرویس تماس در مهلت مقرر پاسخ نداد.",
|
||||
"service_unreachable": "ارتباط با سرویس تماس برقرار نشد.",
|
||||
"service_http_error": "سرویس تماس درخواست را با خطا پاسخ داد.",
|
||||
"service_rejected": "سرویس تماس درخواست را نپذیرفت.",
|
||||
"invalid_service_response": "پاسخ سرویس تماس معتبر نبود.",
|
||||
"unexpected_error": "خطای غیرمنتظره در پردازش درخواست تماس رخ داد.",
|
||||
}.get(self.last_error, "وضعیت درخواست تماس نیاز به بررسی دارد." if self.last_error else "")
|
||||
Reference in new issue
Block a user