Whatsapp ile onay süreci yürütmek
Uygulamanızdan veya erp’den whatsapp ile iletişim sağlamak istiyorsanız öncelikle Facebook Business Manager Hesabı açmanız gerekiyor. Bu hesapta kullanılacak telefon numarasının daha önce hiç whatsapp kaydı yapmamış olması öneriliyor.
Bu aşamadan sonra bir WhatsApp Business Solution Provider (BSP) ile anlaşmanız gerekiyor. Bu da karmaşık işlemlerden kurtularak api ile veya bir ara yüz ile mesaj gönderip almanızı sağlıyor. Bunlardan bazıları Twilio, Desk360.
Ben, bu detaylarla uğraşmamak için, ve gruba mesaj göndermeme gibi kısıtları olduğu için ve ücret ödememek için kendim yazdım uygulamayı selenium kullanarak. Böylece hem Facebook Business hem de BSP detaylarından ve ücretlerinden kurtulmuş oldum. Boşta olan bir hattınız varsa bununla web whatsapp’ta oturum açarak kullanabilirsiniz.
Uygulamayı github adresimde bulabilirsiniz. Ben sanal makine üzerinde çalıştırıyorum ama siz kendi makinenizden de çalıştırabilirsiniz. Çalıştırdığınızda Chrome kapalı olmalı. Program açıp, mesajı atıp tekrar kapatıyor. Kapalı halde de yapılabiliyor ama ben o şekilde çok fazla hata aldığım için vazgeçtim. İhtiyaca göre chrome xpath kopyalama ile programı değiştirip botu yönlendirebilirsiniz. XPATH çıkarma işlemi ile ilgili youtube videoları inceleyebilirsiniz.
https://github.com/serdal-aydogmus/Whatsapp-API
whatsapp_api.py altında göreceğiniz CHROMEDRIVER_PATH kısmını kendi makinenizdeki yol ile değiştirirseniz sorunsuz çalışacaktır.
Canias’ta tetikleme kodunu henüz entegre etmedim ilgili diyaloga fakat buton içine yazdığım şu kodla test ettim:
SUNUCU IP kısmını kendi sunucu ip’niz ile değiştirmeniz gerekiyor:
OBJECT:
STRING VAR3,
STRING INPUT,
STRING CONTTYPE,
STRING REQBODYSTR,
STRING MYHEADERS,
STRING JSONN;
SELECT * FROM zzTest WHERE 1=2;
CONTTYPE = ‘application/json’;
MYHEADERS = ‘Content-Type|,application/json’;
REQBODYSTR ='{“group_name”: “Serdal Serdal”,”poll_question”: “deneme2 deneme3”}’;
SENDHTTPPOST REQBODYSTR TO ‘http://SUNUCU_IP:5000/poll-result’ HEADERS MYHEADERS CONTENTTYPE CONTTYPE REQUESTMETHOD POST;
VAR3 = SYS_HTTPPOSTRESPONSE;
JSONN = VAR3;
zzTest_JSONN = JSONN;
INSERT INTO zzTest;
JSON parse etmek için Canias XML kullanılıyor ama bu kısmı karmaşık bulduğum için mssql view ile parse ederek çağırdım. View create kodu aşağıdadır. Oluşturduğum test tablosu zzTest ve kolonumun adı JSONN.
CREATE VIEW vw_poll AS
SELECT
a.id AS anket_id,
JSON_VALUE(a.JSONN, ‘$.polls[0].title’) AS anket_baslik,
JSON_VALUE(a.JSONN, ‘$.polls[0].question’) AS anket_soru,
JSONN.[option],
JSONN.votes
FROM zzTest a
CROSS APPLY (
SELECT
[option],
votes
FROM OPENJSON(a.JSONN, ‘$.polls[0].options’)
WITH (
[option] NVARCHAR(250) ‘$.option’,
votes INT ‘$.votes’
)
) AS JSONN;
Buradaki onayları da kendi gönderdiğiniz ilgili anket ismiyle çağırarak teklif onayı, sipariş onayı, BPM onayı gibi işlemlerde kullanabilirsiniz.