|
|
@@ -5,14 +5,16 @@ |
|
|
|
from __future__ import unicode_literals |
|
|
|
import frappe |
|
|
|
from frappe.model.document import Document |
|
|
|
from twilio.rest import Client |
|
|
|
from frappe import _ |
|
|
|
from frappe.utils.password import get_decrypted_password |
|
|
|
from twilio.rest import Client |
|
|
|
from six import string_types |
|
|
|
from json import loads |
|
|
|
|
|
|
|
class TwilioSettings(Document): |
|
|
|
def validate(self): |
|
|
|
self.validate_twilio_credentials() |
|
|
|
def on_update(self): |
|
|
|
if self.enabled: |
|
|
|
self.validate_twilio_credentials() |
|
|
|
|
|
|
|
def validate_twilio_credentials(self): |
|
|
|
try: |
|
|
@@ -23,14 +25,15 @@ class TwilioSettings(Document): |
|
|
|
frappe.throw(_("Invalid Account SID or Auth Token.")) |
|
|
|
|
|
|
|
def send_whatsapp_message(sender, receiver_list, message): |
|
|
|
import json |
|
|
|
twilio_settings = frappe.get_doc("Twilio Settings") |
|
|
|
if not twilio_settings.enabled: |
|
|
|
frappe.throw(_("Please enable twilio settings before sending WhatsApp messages")) |
|
|
|
|
|
|
|
if isinstance(receiver_list, string_types): |
|
|
|
receiver_list = json.loads(receiver_list) |
|
|
|
receiver_list = loads(receiver_list) |
|
|
|
if not isinstance(receiver_list, list): |
|
|
|
receiver_list = [receiver_list] |
|
|
|
|
|
|
|
|
|
|
|
twilio_settings = frappe.get_doc("Twilio Settings") |
|
|
|
auth_token = get_decrypted_password("Twilio Settings", "Twilio Settings", 'auth_token') |
|
|
|
client = Client(twilio_settings.account_sid, auth_token) |
|
|
|
args = { |
|
|
|