如何在 Django 中发送短信?

How can I send a sms in Django?

我在 Django 项目中尝试使用 SMSC 服务发送短信时遇到问题。

我发送电子邮件和短信的 Celery 任务:

 def order_created_retail(order_id):
    # Task to send an email when an order is successfully created
    order = OrderRetail.objects.get(id=order_id)
    subject = 'Order №{}.'.format(order_id)
    message_mail = 'Hello, {}! You have successfully placed an order{}. Manager will contact you shortly'.format(order.first_name, order.id)
    message_sms = 'Your order №{} is accepted! Wait for operator call'
    mail_sent = send_mail(
        subject,
        message_mail,
        'email@email.com',
        [order.email]
    )
    smsc = SMSC()

    sms_sent = smsc.send_sms(
        [order.phone],
        str(message_sms)
    )
    return mail_sent, sms_sent

电子邮件发送正确,但对于短信我收到错误:

Task orders.tasks.order_created_retail[f05458b1-65e8-493b-9069-fbaa55083e7a] raised unexpected: TypeError('quote_from_bytes() expected bytes')

来自 SMSC 库的函数:

    def send_sms(self, phones, message, translit=0, time="", id=0, format=0, sender=False, query=""):
        formats = ["flash=1", "push=1", "hlr=1", "bin=1", "bin=2", "ping=1", "mms=1", "mail=1", "call=1", "viber=1", "soc=1"]

        m = self._smsc_send_cmd("send", "cost=3&phones=" + quote(phones) + "&mes=" + quote(message) + \
                    "&translit=" + str(translit) + "&id=" + str(id) + ifs(format > 0, "&" + formats[format-1], "") + \
                    ifs(sender == False, "", "&sender=" + quote(str(sender))) + \
                    ifs(time, "&time=" + quote(time), "") + ifs(query, "&" + query, ""))

        # (id, cnt, cost, balance) или (id, -error)

        if SMSC_DEBUG:
            if m[1] > "0":
                print("Сообщение отправлено успешно. ID: " + m[0] + ", всего SMS: " + m[1] + ", стоимость: " + m[2] + ", баланс: " + m[3])
            else:
                print("Ошибка №" + m[1][1:] + ifs(m[0] > "0", ", ID: " + m[0], ""))

        return m

我做错了什么?

谢谢!

为了解决这个问题,我开始调查给出错误的函数。

原来我传递的值不正确。该函数需要一个字符串。我花了很长时间才弄清楚为什么编辑没有帮助。

原来每次编辑都要RESET CELERY