Skrip Python 20-baris yang mengucapkan selamat pagi kepada orang tua setiap hari melalui WhatsApp

Penulis bahan, terjemahan yang kami terbitkan hari ini, mengatakan bahwa orang modern, yang hidupnya penuh dengan pekerjaan, sering lupa untuk menulis pesan kepada teman dan kerabat mereka. Dia, melihat bagaimana orang tuanya mengirim kutipan inspirasional dan tips kesehatan yang berguna ke WhatsApp setiap pagi, memutuskan bahwa waktunya telah tiba untuk membalas.

Dalam panduan ini, kami akan menulis skrip Python sederhana yang dirancang untuk mengirim pesan WhatsApp. Dalam perjalanan kerja, kita akan menggunakan paket Twilio Python. Untuk mengatur peluncuran skrip setiap hari pada waktu tertentu, kami akan menempatkan kode di cloud.



Salah satu pendekatan untuk memecahkan masalah ini adalah dengan menggunakan paket Selenium Python dan versi web WhatsApp alih-alih layanan Twilio, yang, setelah melelahkan kemungkinan penawaran gratis, perlu dibayar. Tetapi karena bekerja dengan versi web WhatsApp memerlukan pemindaian kode QR secara berkala menggunakan ponsel, itu tidak akan berfungsi untuk mengotomatiskan pengiriman pesan dengan pendekatan ini.

Bekerja pada proyek akan terdiri dari tiga langkah:

  1. Pengaturan Twilio.
  2. Belajar dan memodifikasi kode.
  3. Menyebarkan proyek di cloud dan menyiapkan pemicu.

Langkah 1. Pengaturan Twilio


Buat akun gratis di situs web Twilio , konfirmasi alamat email dan nomor telepon Anda.


Pendaftaran Akun Twilio

Selain itu, sebagai bagian dari penawaran gratis Twilio, Anda harus menggunakan kotak pasir WhatsApp (WhatsApp Sandbox). Ini berarti bahwa Anda tidak dapat menggunakan nomor telepon Anda sendiri, dan bahwa Anda harus menjalani prosedur untuk mengeluarkan izin untuk menerima pesan WhatsApp.

Anda dapat menggunakan nomor perpesanan Anda sendiri setelah WhatsApp mengizinkan Twilio untuk menggunakan nomor Anda. Untuk mendapatkan izin, Anda harus mengisi formulir. Anda dapat belajar dari materi pendukung Twilio bahwa meskipun Twilio bekerja langsung dengan WhatsApp, mungkin perlu waktu untuk mendapatkan izin. Selain itu, ia berbicara tentang ruang lingkup terbatas untuk mengeluarkan izin. Akibatnya, banyak yang harus menggunakan kotak pasir Twilio WhatsApp.

Semua ini tidak menimbulkan banyak kegembiraan, tetapi apa yang tersedia bagi kami sebagai bagian dari penawaran gratis Twilio memungkinkan kami untuk menyelesaikan masalah kami. Selain itu, ternyata kotak pasir WhatsApp masih merupakan satu-satunya pilihan yang tersedia secara luas.

Sekarang Anda harus menghubungkan telepon penerima pesan ke kotak pasir, setelah itu Anda dapat mengirim pesan ke telepon ini. Untuk mempelajari cara melakukan ini, Anda harus pergi ke bagian konsol Twilio, yang didedikasikan untuk WhatsApp. Secara khusus, diusulkan di sini untuk mengirim pesan WhatsApp dengan teks yang ditentukan ke nomor tertentu.


Halaman konsol Twilio dengan instruksi untuk menghubungkan ponsel tempat Anda dapat mengirim pesan


Permintaan koneksi dikirim dari telepon

Simpan nomor WhatsApp yang dikeluarkan untuk Anda di kontak Anda. Dia dapat diberi nama apa pun. Agar tidak menyulitkan hidup saya, saya memanggil kontak ini Twilio Sandbox, dan kemudian mengirim pesan kepadanya dari telepon ayah saya (ini dapat dilihat pada gambar sebelumnya). Prosedur ini dilakukan hanya sekali.

Sekarang Anda harus pergi ke konsol Twilio dan mendapatkan token SID dan otentikasi untuk akun Anda. Data ini akan membantu Twilio mengenali Anda saat Anda secara terprogram bekerja dengan layanan ini.

Langkah 2. Mempelajari dan memodifikasi kode


Unduh repositori GitHub ini dan unzip arsipnya.


Isi file zip

Di sini Anda akan menemukan file sumber ( whatsapp_messaging.py ) dan paket penyebaran proyek ( aws_lambda_deploy.zip ).

Ini kode skripnya:

 from twilio.rest import Client def msg_mom_and_dad(event=None, context=None):    #    SID   ,     Twilio    twilio_sid = 'AC84c9f1602d7fb6af4eda5b0c39a03b37'    auth_token = '4a2021b28f1aa606d9c6945d3c248ebd'    whatsapp_client = Client(twilio_sid, auth_token)    #        ,    #         contact_directory = {'daddy':'+919624666836'}    for key, value in contact_directory.items():        msg_loved_ones = whatsapp_client.messages.create(                body = 'good morning {} !'.format(key),                from_= 'whatsapp:+14155238886',                to='whatsapp:' + value,            )        print(msg_loved_ones.sid) 

Sekarang kita akan menguraikan kode ini. Di sini, untuk kenyamanan, tangkapan layar dengan garis bernomor.

Kode file Whatsapp_messaging.py dengan baris bernomor

  • Baris 1. Impor klien untuk bekerja dengan Twilio REST-API.
  • Baris 3. Membuat fungsi msg_mom_and_dad . Kami akan meneruskan fungsi ini ke AWS. Ini akan dipanggil setiap hari pada waktu yang ditentukan.
  • Baris 6-7. Di sini Anda perlu mengganti sid ada dan auth_token dalam kode dengan Anda sendiri (kami berbicara tentang menerimanya di akhir bagian sebelumnya).
  • Baris 9. Buat objek klien Twilio menggunakan kredensial.
  • Baris 13. Membuat kamus. Di sini, nama penerima pesan digunakan sebagai kunci, dan nomor teleponnya sebagai nilainya. Anda dapat menambahkan informasi kontak tambahan ke kamus ini.
  • Baris 15. Loop for , di mana kamus dilintasi (sejauh ini hanya ada satu entri di dalamnya). Di body Anda perlu menentukan teks pesan. Saya membuat pesan sederhana dengan teks "selamat pagi", diikuti dengan nilai yang diambil dari kunci item kamus saat ini. Dalam kasus saya, ini mengarah pada pembentukan pesan "selamat pagi ayah!". from_ menunjukkan nomor WhatsApp yang kami terima sebelumnya. Untuk menuliskan jumlah penerima pesan - yang sebelumnya mereka kirim permintaan untuk terhubung ke kotak pasir Twilio WhatsApp.
  • Baris 23. Di sini, untuk memeriksa status pesan, kami menampilkan SID-nya. Kami tidak akan menggunakan informasi ini.

Untuk menggunakan kode ini untuk mengirim pesan, Anda perlu mengubah yang berikut di dalamnya:

  • twilio_sid
    auth_token
    contact_directory
    dari_
    tubuh (ini opsional)

Setelah Anda membuat perubahan pada kode, simpan file. Kemudian unzip arsip aws_lambda_deploy.zip , ganti file whatsapp_messaging.py dengan file Anda dengan nama yang sama, lalu kemas semuanya kembali ke arsip .zip. Arti dari tindakan ini adalah untuk memasukkan dalam kode kredensial Anda dan informasi tentang orang-orang yang ingin Anda kirimi pesan. Segala sesuatu yang lain dalam paket, yang dirancang untuk ditempatkan di AWS, tetap tidak berubah. Sekarang mari kita bekerja dengan AWS.

Langkah 3. Menyebarkan proyek pada AWS dan mengkonfigurasi pemicu


Kode siap dijalankan dan mengirim pesan WhatsApp. Jika Anda tertarik pada peran apa yang dimainkan file lain dari arsip aws_lambda_deploy.zip dalam proyek, maka perlu diketahui bahwa di antara file-file ini adalah paket Twilio dan semua dependensi proyek lainnya. Kami memerlukan semua ini karena kami berencana untuk menggunakan fungsi AWS Lambda di lingkungan Python yang tidak memiliki paket Twilio. Dan mengapa kita tidak memperbaiki ini hanya dengan menjalankan perintah pip install twilio untuk menginstal paket yang benar? Faktanya adalah di sini kita tidak memiliki server.

Untuk melakukan ini, kami menggunakan AWS Lambda - lingkungan komputasi tanpa server di mana Anda dapat menempatkan fragmen kode, yang panggilannya, sesuai dengan kebutuhan pengguna, dipicu oleh berbagai peristiwa dan pemicu. Kode kami direncanakan untuk berjalan hanya sekali sehari, jadi menggunakan sesuatu seperti server EC2 di AWS yang berjalan sepanjang waktu akan menjadi pemborosan sumber daya komputasi dan uang. Fungsi Lambda kami akan dipanggil setiap hari pada waktu tertentu berdasarkan permintaan dari pemicu, dan implementasinya akan memakan waktu sangat sedikit.

Mulai buat fungsi Lambda

Masuk ke akun AWS Anda. Setelah itu, pergi ke Services → Compute → Lambda → Create a function .


Layar pembuatan fungsi Lambda

Mari beri nama fungsi.

Sebagai lingkungan di mana fungsi akan dieksekusi, kita akan memilih Python 3.6. Kami tidak perlu terhubung ke layanan AWS lainnya. Oleh karena itu, kami puas dengan tingkat izin yang ditentukan oleh opsi Create a new role with basic Lambda permissions .

Setelah menyelesaikan pengaturan, cukup klik tombol Create function . Sekarang kita akan berada di panel kontrol utama.


Panel kontrol

Di sini, di bagian Function code , Anda perlu menentukan Handler yang dengannya sistem dapat menjalankan kode kami. Dalam kasus kami, di bidang Handler , tulis whatsapp_messaging. msg_mom_and_dad whatsapp_messaging. msg_mom_and_dad , menentukan nama file dengan kode dan fungsi yang ingin kita panggil.

Di bidang Function package , Anda perlu memuat file .zip kami, yaitu file yang kami buat di langkah sebelumnya.

Sekarang kode siap dijalankan. Anda dapat memeriksa apakah fungsi berfungsi dan mengirim pesan dengan mengklik tombol Test .

Langkah terakhir dalam pekerjaan kami adalah menyiapkan pemicu yang akan memanggil fungsi setiap hari pada waktu tertentu. Ikuti jalan Add trigger → CloudWatch Events .


Pengaturan pemicu

Kita perlu membuat aturan baru ( Rule ). Dia perlu menetapkan nama ( Rule name ). Jika diinginkan, Anda dapat menambahkan deskripsi ke dalamnya ( Rule description ).

Tentukan tipe aturan ( Rule type ) sebagai Schedule expression .

Waktu panggilan fungsi diatur menggunakan cron(30 1 * * ? *) construct cron(30 1 * * ? *) . Mari kita analisa konstruksi ini:

  • 30 1 berarti waktu UTC 1:30 di pagi hari. Sekarang jam 7 pagi waktu IST saya.
  • Dua karakter berikut, * * , menunjukkan hari bulan dan bulan.
  • Dua karakter selanjutnya ? * ? * , memungkinkan Anda menentukan hari dalam seminggu dan setahun. Desain ini berarti bahwa fungsinya akan dipanggil setiap hari, tanpa batasan tahun dan bulan.

Di sini Anda dapat mempelajari cara mengatur pekerjaan cron Anda sendiri.

Setelah pengaturan pemicu selesai, centang apakah kotak centang Enable trigger diaktifkan, yang memungkinkan pemicu. Sekarang tinggal mengklik tombol Add dan pemicu akan dibuat.


Informasi Pemicu


Detail Fungsi Lambda

Pada panel kontrol fungsi Lambda, Anda dapat melihat bahwa entitas CloudWatch Events melekat pada fungsi tersebut, dan bahwa fungsi tersebut dapat dipanggil ketika pemicu yang sesuai menyala.

Ringkasan



Pesan dikirim oleh skrip Python

Kami telah menyelesaikan pekerjaan di proyek ini. Sekarang Anda dapat mengubah nama kontak Twilio Sandbox menjadi milik Anda sendiri di telepon penerima pesan, di kontak WhatsApp (saya mengubahnya menjadi Son). Sistem kami juga memungkinkan Anda untuk berkomunikasi dengan penerima pesan dari panel kontrol Twilio.

Pembaca yang budiman! Apakah Anda menggunakan Twilio dalam proyek Anda?

Source: https://habr.com/ru/post/id463933/


All Articles