Blog AWS Indonesia

Mengirimkan Pengingat Janji Melalui Pesan Suara Menggunakan Custom Channel pada Amazon Pinpoint dan Amazon Connect

Pendahuluan

Dalam blog kali ini, kita akan mempelajari cara membuat campaign pengingat janji yang selalu aktif, menggunakan Amazon Pinpoint. Seperti kita ketahui, tingkat ketidakhadiran merupakan tantangan yang selalu ada bagi penyedia layanan. Industri seperti perhotelan di kota-kota besar¹ memperkirakan sekitar 20% pengunjung tidak menghadiri reservasi yang mereka buat, sementara industri lainnya seperti salon rata-rata mengalami lima ketidakhadiran per minggu² . Layanan profesional seperti lembaga keuangan dan tim penjualan memiliki tantangan serupa dalam memastikan klien agar tidak melewatkan jadwal pertemuan. Bagi pelaku industri ini, jadwal pertemuan yang terlewat dapat diartikan sebagai pendapatan yang hilang. Akibatnya, rasio ketidakhadiran adalah metrik utama yang dijadikan ukuran dalam upaya peningkatan layanan. Pengiriman pesan suara memberikan cara baru untuk menjangkau pelanggan selain melalui email atau SMS, dan pesan pengingat suara memberikan pelanggan pilihan saluran berdasarkan preferensi pribadi.

Garis Besar

Amazon Pinpoint adalah layanan komunikasi multisaluran yang memungkinkan pelanggan mengirim pesan promosi dan transaksional melalui email, SMS, push, suara, dan saluran lainnya sesuai kebutuhan. Amazon Connect adalah layanan pusat kontak omnichannel berbasis cloud yang mudah digunakan oleh perusahaan untuk menyediakan layanan pelanggan yang unggul dengan biaya lebih rendah.

Ada beberapa keunggulan jika kita merangkai layanan-layanan ini secara sinergis. Amazon Pinpoint memungkinkan Anda membangun segmen pengguna yang dapat digunakan dalam kampanye (campaign). Amazon Connect memungkinkan pelanggan untuk mengirim pesan suara keluar dalam skala besar jika Anda memiliki jumlah pengguna yang banyak dan jumlah transaksi per detik yang tinggi.

Untuk menggunakan layanan ini secara sinergis, Anda harus membuat custom channel pada Amazon Pinpoint, yang dapat dijalankan melalui fungsi AWS Lambda. Fungsi ini memungkinkan Anda memanggil API untuk memicu pengiriman pesan sebagai bagian dari kampanye Amazon Pinpoint. Amazon Pinpoint telah menyediakan fungsi AWS Lambda baru yang dapat digunakan untuk mengirim pesan suara melalui Amazon Connect. Konfigurasi ini memungkinkan Anda untuk menentukan pesan suara mana yang akan dikirim, menentukan segmen pengguna yang ingin Anda targetkan, dan mengirim pesan suara dalam skala besar melalui Amazon Connect melalui custom channel pada Amazon Pinpoint.


Rangkaian solusi ini ditujukan bagi pengguna yang sudah terbiasa menggunakan beberapa layanan AWS dan terbiasa dengan fungsi AWS Lambda. Solusi yang dibangun mengandalkan fitur dan penargetan custom channel pada Amazon Pinpoint, bersama dengan API Amazon Connect outbound voice yang dipanggil melalui fungsi AWS Lambda yang telah disiapkan. Setelah selesai, Anda akan dapat membuat kampanye yang selalu aktif yang akan mengirimkan pesan suara ke pasien yang memiliki janji sehari sebelumnya.

Biaya yang terkait dengan solusi ini adalah:

  1. Biaya panggilan keluar Amazon Connect per menit
  2. Biaya sewa nomor telepon Amazon Connect
  3. Biaya Amazon Pinpoint Monthly Targeted Audience (MTA).

Berikut adalah ilustrasi biaya sebuah sistem pengingat suara dengan pengiriman 10 ribu pesan per hari, dengan durasi rata-rata 20 detik per panggilan, ke total 300 ribu pemirsa bulanan, di Amerika Serikat. Perlu diingat bahwa harga bervariasi untuk setiap negara. Harga panggilan keluar Amazon Connect lengkap dapat ditemukan di sini.

Solusi

Untuk panduan ini, kami mengasumsikan:

  • Anda telah memiliki Akun AWS yang aktif
  • Pemahaman dasar tentang IAM dan pengaturan akses yang diperlukan untuk membuat: IAM identity provider, roles, policies, dan users.
  • Pemahaman dasar tentang Amazon Pinpoint serta cara membuat project
  • Pemahaman dasar tentang Amazon Connect dan pengalaman dalam membuat Contact Flow (aliran kontak). Informasi lebih lanjut tentang mempersiapkan Amazon Connect dapat ditemukan di sini.

Langkah 1: Membuat custom event Pengingat Janji Temu

Langkah pertama dalam menyiapkan solusi ini adalah membuat dan mengirimkan custom event ke arah Amazon Pinpoint. Ada beberapa cara untuk mengirimkan event di aplikasi Anda. Untuk kebutuhan demonstrasi, berikut adalah dua contoh panggilan event menggunakan AWS SDK untuk Python (Boto3) dari dalam Fungsi AWS Lambda.

Perlu diperhatikan bahwa Amazon Pinpoint events API juga dapat digunakan untuk memperbarui endpoint saat event didaftarkan. Dalam contoh di bawah ini, panggilan API pertama akan memperbarui atribut endpoint AppointmentDate dan AppointmentTime berisi detail janji yang akan datang. Atribut ini akan digunakan dalam pengiriman pesan ke pengguna akhir

Contoh Event: Appointment Coming Up

import boto3

client = boto3.client('pinpoint')
app_id = '[PINPOINT_PROJECT_ID]'
endpoint_id = '[ENDPOINT_ID]'
address = '[PHONE_NUMBER]'

def lambda_handler(event, context):

client.put_events(
    ApplicationId = applicationId,
    EventsRequest={
        'BatchItem': {
            endpoint_id: {
                'Endpoint': {
                    'ChannelType': 'CUSTOM',
                    'Address': address,
                    'Attributes': {
                        'AppointmentDate': ['December 15th, 2020'],
                        'AppointmentTime': ['2:15pm']
                    }
                },
               'Events':{
               'appointment-event': {
                   'Attributes':{},
                   'EventType': 'AppointmentReminder',
                   'Timestamp': datetime.datetime.fromtimestamp(time.time()).isoformat()
                }
              }
           }
        }
    }
)

CATATAN: Langkah-langkah diatas mengasumsikan bahwa event AppointmentReminder dikirimkan ke arah Amazon Pinpoint. Jika Anda tidak dapat mengintegrasikan panggilan API di atas ke dalam aplikasi Anda, Anda dapat secara manual membuat fungsi AWS Lambda menggunakan runtime Python dengan kode di atas untuk memicu sample event.

Langkah 2: Buat contact flow Amazon Connect untuk panggilan keluar

Artikel ini mengasumsikan bahwa Anda telah memiliki instans Amazon Connect yang sudah disiapkan dan berfungsi. Pada langkah ini, kita akan membuat contact flow Amazon Connect untuk menghubungi penerima dan membacakan pesan sebelum mengakhiri panggilan.

  1. Masuk ke instans Amazon Connect Anda menggunakan URL akses Anda (https: // <alias> .awsapps.com / connect / login).
    Catatan: Ganti alias dengan alias instance Anda.
  2. Pada panel navigasi di bagian kiri, pilih Routing, lalu pilih Contact flows.
  3. Pada Contact flows, pilih salah satu template yang tersedia, atau pilih Create contact flow untuk mendesain contact flow dari awal. Untuk informasi selengkapnya, lihat Create a New Contact Flow
  4. Unduh contoh file JSON berisi konfigurasi contact flow Outbound_calling.json.
  5. Pilih menu dropdown dan klik Save dan pilih Import flow (beta).
  6. Pilih file Outbound_calling.json di dialog Import flow (beta) dan pilih Save.
  7. Pilih Save untuk membuka pilihan Save flow. Kemudian pilih Save untuk menutup.
  8. Pilih Publish untuk membuka menu Publish. Kemudian pilih Publish untuk menutup.
  9. Pada desainer contact flow, buka Show additional flow information
  10. Pada bagian ARN, salin Amazon Resource Name (ARN) contact flow tersebut. Yang akan terlihat seperti berikut:
    arn:aws:connect:region:123456789012:instance/[ConnectInstanceId]/contact-flow/[ConnectContactFlowId]
    Catat ConnectInstanceId dan ConnectContactFlowId dari ARN tersebut, karena keduanya akan digunakan di langkah berikutnya.
  11. Pada menu navigasi di sebelah kiri, pilih Routing lalu pilih Queues.
  12. Pilih queue yang ingin Anda gunakan untuk panggilan keluar.
  13. Di layar Edit queue, klik Show additional queue.
  14. Pada bagian ARN, salin Amazon Resource Name (ARN) untuk queue tersebut. Yang akan terlihat seperti berikut:
    arn:aws:connect:region:123456789012:instance/[ConnectInstanceId]/contact-flow/[ConnectQueueId]
    Catat ConnectQueueId dari ARN. Karena akan digunakan di langkah berikutnya.

Langkah 3: Menerapkan dan mengubah konfigurasi Amazon Pinpoint ke arah custom channel Amazon Connect menggunakan fungsi AWS Lambda

Selanjutnya, kita perlu menerapkan custom channel pada Amazon Pinpoint. Custom channel pada Amazon Pinpoint memungkinkan Anda mengirim pesan melalui layanan apa pun dengan API, termasuk Amazon Connect. AWS Serverless Application Repository berisi kumpulan fungsi AWS Lambda open source yang akan kita gunakan dalam membuat custom channel ini. Setelah menerapkan fungsi AWS Lambda, kita akan membuat beberapa perubahan sesuai dengan kebutuhan.

  1. Bukalah AWS Lambda Console, lalu pilih Create function.
  2. Pada Create function, Pilih Broswer serverless app repository
  3. Pada Public applications, beri centang pada Show apps untuk membuat IAM role atau resource policies dan masukkan amazon-pinpoint-connect-channel di kotak pencarian.
  4. Pilih amazon-pinpoint-connect-channel dari daftar dan perhatikan isi Aplikasi tersebut.
  5. Pada Application settings masukkan detail untuk ConnectContactFlowId, ConnectInstanceId, dan ConnectQueueId dari langkah sebelumnya.
  6. Setelah memastikan semua detil sesuai, berikan centang di sebelah I acknowledge that this app creates custom IAM roles and resource policies, lalu pilih Deploy.
  7. Tunggu beberapa menit hingga aplikasi menerapkan dua fungsi AWS Lambda dan queue AWS Simple Queue Service.
  8. Pada Resources, pilih PinpointConnectQueuerFunction untuk membuka konfigurasi fungsi AWS Lambda. Ini adalah fungsi AWS Lambda yang akan dipanggil oleh Amazon Pinpoint saat pesan dibuat.
  9. Di bawah Function code, temukan baris ke 31 dan ganti sebagai berikut
    message = "Hello World! -Pinpoint Connect Channel" dengan message = "This is a reminder of your upcoming appointment on {0} at {1}".format(endpoint_profile["Attributes"]["AppointmentDate"][0], endpoint_profile["Attributes"]["AppointmentTime"][0])
  10. Pilih Deploy.

Langkah 4: (Opsional) Ubah fungsi custom channel AWS Lambda untuk menyesuaikan dengan laju perubahan jumlah panggilan keluar

Secara default, custom channel yang kita terapkan di langkah sebelumnya akan melakukan panggilan keluar melalui Amazon Connect dengan kecepatan 1 panggilan setiap 3 detik. Ini memungkinkan Anda untuk menentukan jumlah panggilan keluar yang aktif untuk menghindari batas layanan. Perhatikan current service limits in Amazon Connect untuk selengkapnya.

  1. Bukalah AWS Lambda Console, lalu pilih fungsi AmazonPinpointConnectChannelbackgroundprocessor.
  2. Pada Function code, temukan baris ke 73 dan gantilah sleep timer yang semula 3 detik, sesuai dengan kebutuhan Anda.
  3. Pilih Deploy.

Langkah 5: Buat custom campaign pada Pinpoint menggunakan fungsi lambda dan segmen Anda

  1. Buatlah sebuah file CSV untuk mengimpor endpoint dengan atribut AppointmentDate dan AppointmentTime.
    Example:
    Id,Address,ChannelType,Attributes.AppointmentDate,Attributes.AppointmentTime
    1,+1[PHONE_NUMBER],SMS,November 30 2020,9:00am
    2,+1[PHONE_NUMBER2],SMS,November 30 2020,10:00am
  2. Bukalah konsol Amazon Pinpoint.
  3. Di daftar All Projects, pilih project Anda.
  4. Di panel navigasi, pilih Segments.
  5. Pilih Create Segment.
  6. Pilih Import a segment dan unggah file CSV Anda dan pilih Create segment.
  7. Di panel navigasi, pilih Campaigns.
  8. Pilih Create Campaign.
  9. Berikan nama pada menu wizard Create a campaign
  10. Di bawah Channel pilih Custom.
  11. Pilih Next.
  12. Pada Choose a segment screen, pilih segmen yang dibuat di atas, dan pilih Next.
  13. Di layar Create your message, lakukan hal berikut:
    1. Untuk fungsi Lambda, pilih AmazonPinpointConnectChannel yang kita terapkan pada Langkah 3 di atas.
    2. Untuk endpoint Options pilih SMS.
    3. Pilih Next.
  14. Pada layar Choose when to send the campaign, lakukan hal berikut:
    1. Pilih When an event occurs
    2. Pada Events, pilih AppointmentReminder.
    3. Pada campaign dates, pilih Start date serta waktu dan End date berikut waktu sebagai durasi campaign.
  15. Pilih Next.
  16. Tinjau kembali detil campaign dan pilih Launch campaign.

Membersihkan Kembali:

Agar tidak menimbulkan biaya lebih lanjut, ikuti langkah-langkah di bawah ini untuk menghapus dua fungsi AWS Lambda dan queue Amazon Simple Queue Service yang dibangun dalam langkah-langkah sebelumnya.

  1. Buka konsol Amazon CloudFormation .
  2. Pilih severlessrepo-amazon-pinpoint-connect-channel dan pilih Delete.
  3. Pilih Delete stack di halaman konfirmasi.

Langkah Lanjutan:

Anda dapat terus melanjutkan eksplorasi ini menggunakan Amazon Pinpoint dan Amazon Connect untuk membuat pengalaman pengguna sesuai kebutuhan.

Untuk mempelajari lebih lanjut tentang layanan ini, silakan kunjungi halaman web Amazon Pinpoint atau Amazon Connect.

(1) https://www.scisolutions.com/uploads/news/Missed-Appts-Cost-HMT-Article-042617.pdf

(2) https://blog.carbonfreedining.org/the-ultimate-guide-to-restaurant-no-shows

Artikel ini merupakan terjemahan dari blog yang dibuat oleh Ryan Lowe dan Andy Craig pada 27 November 2020 berjudul Send voice appointment reminders using Amazon Pinpoint custom channels and Amazon Connect.

Jika Anda tertarik mempelajari tentang lanjut fitur-fitur seputar Amazon Connect, Anda bisa menghubungi tim kami.

Firman Sebastian Priatno

Firman Sebastian Priatno

Firman Priatno is Solutions Architect at Amazon Web Services based in Indonesia. He has acquired 15 years of experience in IT industry with various verticals including Smart City, IoT, Telco, Security & Surveillance. Outside of his work, he is also an active member of several non-profit organizations supporting many causes in diversity & inclusion. In his spare time, he enjoys manual-brewing coffee from around the world.