
Sejak awal tahun 2000-an, berita tentang pengenalan bot obrolan ke dalam pekerjaan telah muncul dengan frekuensi yang patut ditiru. Pada artikel ini saya akan memberi tahu Anda di mana untuk memulai dan memberikan ikhtisar solusi yang ada, serta berbagi pengalaman membuat bot untuk Selectel.
Lingkup aplikasi
Pengembangan bisnis sering disertai tidak hanya dengan meningkatkan bisnis inti, tetapi juga dengan men-debug proses pendukung. Chatbots hanya bagian dari aktivitas bisnis sebagai bagian dari otomatisasi rutin. Komunikasi dan implementasi tugas-tugas sederhana dari jenis yang sama mendasari karya bot obrolan. Dengannya, Anda tidak hanya dapat melakukan tugas berulang, tetapi juga tugas yang tidak dapat dilakukan seseorang, misalnya, memantau aktivitas di jejaring sosial.
Saya ingin memberikan berbagai area aplikasi untuk bot menggunakan contoh pekerjaan saya sendiri di Selectel. Mini-spoiler: Saya memulai pekerjaan saya sebagai penulis teknis, sekarang saya seorang insinyur di departemen solusi cloud. Jalan untuk menerapkan asisten virtual dimulai dengan bot untuk departemen pemasaran, yang melacak komentar dan menyebutkan perusahaan di jejaring sosial. Pengembangan tersebut sangat sederhana, tetapi secara efektif melengkapi solusi yang ada di pasar, misalnya,
layanan IFTTT .
Perkembangan berikut dalam praktik saya adalah chatbot internal untuk departemen SDM dan bot untuk komunikasi dengan klien, disajikan sebagai demo stand selama konferensi SelectelTechDay di
St. Petersburg dan
Moskow . Kedua bot dibuat menggunakan berbagai layanan dan teknologi. Dan sebelum masuk ke detail teknis, pertimbangkan skema tingkat atas bot perangkat.
Prinsip dasar botani

Aktivitas Chatbot dibangun di sekitar 3 tindakan utama:
- Informasi diterima atau ditampilkan melalui saluran komunikasi tertentu, misalnya, dalam dialog Slack atau Vk.com.
- Pengakuan niat adalah analisis komprehensif dari informasi yang diterima untuk membentuk jawaban
- Pemrosesan tindakan - segala pekerjaan yang dilakukan di sisi server, diperlukan untuk menyiapkan jawaban yang benar. Misalnya, jika ramalan cuaca diminta, maka permintaan akan dibuat ke API tertentu tentang cuaca di kota N, dan hasil dari perintah ini akan dikirim ke pengguna
Tindakan utama chatbots digabungkan dalam kerangka tugas mempertahankan konteks untuk menciptakan bentuk komunikasi humanoid dan mendukung dialog. Chatbot harus "mengingat" topik pembicaraan dan menyesuaikan jawaban-jawabannya.
Masalah menghubungkan chatbot ke platform sosial menonjol secara terpisah. Konektor ke pesan instan dan jejaring sosial dapat diimplementasikan secara independen atau didukung dalam kerangka produk yang ada untuk membuat bot obrolan.
Saat ini, ada banyak solusi yang menawarkan layanan siap pakai untuk mengotomatisasi dukungan teknis atau proses penjualan. Saya akan lebih memperhatikan alat yang memungkinkan Anda membuat layanan yang memenuhi persyaratan internal untuk keamanan perusahaan tanpa menyulitkan proses pengembangan.
Konstruksi botani
3 prinsip obrolan bot (saluran, analisis, tindakan) di atas dapat diimplementasikan dengan berbagai cara. Opsi termudah adalah membandingkan teks yang masuk dan mengirim jawaban yang sesuai kepada pengguna.

Tujuan kami sedikit lebih tinggi - untuk mendapatkan sistem di mana Anda dapat dengan cepat menambahkan skrip baru dan yang akan memahami pengguna dalam banyak kasus.
Untuk melakukan ini, kita perlu memahami apa yang dibicarakan pengguna, mengendalikan kemajuan dialog dan, dalam beberapa kasus, melakukan tindakan tertentu (misalnya, memesan ruang pertemuan). Ini dapat dicapai dengan menggunakan alat-alat berikut:
- DialogFlow (Google)
- Wit.ai (Facebook)
- Layanan Azure Bot (Microsoft)
- Rasa Core (Open Source)
Saat memilih suatu produk, faktor-faktor berikut diperhitungkan:
- Seberapa penting penempatan kode yang dapat dieksekusi bot dalam sistem yang ada
Misalnya, dalam kasus Wit.ai dan Dialogflow, kami tidak sepenuhnya mengontrol seluruh proses - kami memberikan teks ke aplikasi ini dan mendapatkan jawaban yang sudah jadi. Menggunakan Rasa Core atau Azure BotBuilder SDK, kita dapat menyimpan semua korespondensi dalam batas-batas sistem internal - Berapa banyak saluran komunikasi yang perlu Anda sambungkan
Dialogflow menyediakan kemampuan untuk menggunakan sejumlah konektor yang menghubungkan pesan instan dan jejaring sosial dengan menentukan kunci akses. Anda dapat menggunakan sejumlah saluran untuk Wit.ai dan Rasa Core, tetapi logika menyambungkannya harus diimplementasikan secara independen (ini seringkali merupakan tugas yang sangat sepele). Layanan Azure Bot memiliki kemampuan untuk menggunakan konektor ke saluran tertentu, tetapi tidak terbatas pada mereka, dan itu juga dapat terhubung ke sumber lain secara mandiri - Betapa mudahnya untuk melakukan perubahan pada basis pengetahuan bot
Saat membuat bot dalam bentuk kode program tanpa menggunakan antarmuka visual untuk berinteraksi dengannya, kami membatasi lingkaran orang yang dapat membuat perubahan pada dialog dan respons bot. Fungsi untuk menambahkan dan mengedit frasa harus tersedia untuk semua orang
Untuk asisten virtual internal kami dari bot obrolan Tirex, platform dari Google Dialogflow dipilih, yang menyediakan kemampuan untuk mengedit maksud secara visual, dan tindakan dilakukan di dalam
cloud pribadi di Selectel . Faktor penentu adalah kecepatan mulai bekerja dengan bot, keamanan saat mengirim pesan dan keberadaan saluran Slack dalam daftar yang didukung.

Ide membuat bot obrolan telah lama muncul di perusahaan, terutama mengingat masalah apa yang bisa dipecahkan dengan itu:
- Peningkatan jumlah karyawan perusahaan, dan seiring meningkatnya arus pertanyaan serupa seperti "Bagaimana cara menggunakan perpustakaan perusahaan?" dan "Di mana harus makan siang?"
- Pemesanan ruang pertemuan secara teratur dan mengeluarkan kartu izin
- Cari informasi dan dokumen di basis pengetahuan perusahaan

Membuat dan menghubungkan bot di Dialogflow membutuhkan waktu beberapa menit. Pada awalnya, kami akan mempertimbangkan prinsip-prinsip bot obrolan dalam sistem, dan kemudian menambahkan implementasi tindakan kompleks.
Membuat bot di Dialogflow
Penciptaan Arsitektur
Lebih lanjut dalam teks kami akan beroperasi dengan konsep-konsep seperti:
- Niat adalah tugas formal yang ingin dilakukan pengguna.
- Parameter - satu set data yang dibutuhkan untuk menyelesaikan tugas
- Jawaban - suatu fungsi atau program yang dijalankan sebagai tanggapan terhadap maksud yang dikenali
- Frasa pelatihan - contoh pesan dari pengguna tempat chatbot belajar
Dialogflow memproses bahasa alami dan mengekstrak semua data yang diperlukan untuk menjalankan perintah yang rumit. Untuk ini,
agen dibuat yang mengandung beberapa
niat . Masing-masing
niat memungkinkan Anda untuk menyiapkan chatbot untuk memahami nuansa dan kehalusan saat merumuskan permintaan.
Niat termasuk
frasa pelatihan ,
parameter, dan
jawaban . Di dalam frasa pelatihan, kami menyoroti parameter (misalnya, waktu atau tempat) yang diperlukan untuk membentuk jawaban yang benar.
Jawabannya ditunjukkan dengan
niat baik , atau Dialogflow mengirimkan permintaan ke server kami, yang melakukan pekerjaan yang diperlukan dan mengembalikan
jawabannya ke chatbot kami sebagai contoh:
- Untuk pertanyaan sederhana (misalnya, "Apakah kita memiliki program asuransi di luar negeri?", Jawabannya ada pada niat
- Untuk tugas yang lebih kompleks seperti "Apakah ada ruang panggilan gratis sekarang?" respons dibentuk menggunakan permintaan tambahan ke server, yang menentukan waktu luang untuk semua peserta dan kamar

Bekerjalah dengan niat
Pertimbangkan bekerja dengan Dialoglow sebagai contoh reservasi negosiasi. Kami membuat agen manajemen pemesanan dan menentukan niat berikut:
- Lihat pemesanan yang ada
- Pesan ruang rapat
Masing-masing niat digunakan oleh frase pelatihan. Semakin banyak mereka ditambahkan, semakin besar kemungkinan tindakan yang diinginkan akan dilakukan. Dalam contoh kami, niat untuk "Memesan ruang rapat" akan disebabkan oleh frasa berikut:
- Pesan hari ini pukul 23.15 selama 30 menit untuk saya
- Hai Harap pesan ruang pertemuan pada 08/08/2018 mulai pukul 15:00 hingga 16:00
- Buku
- Saya butuh ruang rapat

Prinsip pengumpulan data dalam niat adalah sebagai berikut:
- Berdasarkan input yang diterima, Dialogflow memahami apa maksudnya. Dalam contoh kami - negosiasi pemesanan
- Jika parameter yang diperlukan tidak ditentukan dalam pesan pertama (misalnya, waktu rapat), maka bot obrolan akan menanyakan pertanyaan klarifikasi
- Setelah menerima semua data, Dialogflow akan mengirim permintaan ke server kami di VPC untuk memesan kamar yang diinginkan
Mari kita lihat proses ini dalam tindakan:

Tindakan diproses dengan mengirimkan permintaan dengan semua data ke alamat yang ditambahkan sebelumnya dari server tindakan (URL Webhook):

Ada server di
website.ru/webhook yang memproses perintah kompleks (dalam contoh kami, ia mengembalikan string "Halo dari server!").
Github Gist untuk memulai lebih cepat:
Membuat bot menggunakan RASA
Untuk menggunakan chatbot tanpa layanan pihak ketiga untuk pengenalan teks, Anda dapat menggunakan alat-alat seperti
Rasa , yang memungkinkan Anda untuk sepenuhnya mengontrol seluruh proses bot. Rasa adalah seperangkat komponen perangkat lunak sumber terbuka yang berisi pengenalan suara dan manajemen dialog. Sudah, Anda dapat melihat
pelat Boiler , yang saya siapkan untuk membiasakan diri dengan platform ini, dan kami akan menerbitkan instruksi yang lebih terperinci jika ada permintaan dari komunitas Habr.
Obrolan dan bisnis
Apakah akan menggunakan layanan otomasi untuk layanan pelanggan bukanlah pertanyaan yang mudah. Alat-alat modern memberikan banyak solusi ketika memilih antara fleksibilitas, kecepatan kerja dan keamanan. Sistem pengenalan maksud dalam bahasa alami sekarang tersedia tidak hanya dalam bentuk hak milik, tetapi juga didistribusikan secara bebas, yang membuka peluang besar untuk eksperimen mereka sendiri. Kami telah mempertimbangkan salah satu opsi yang memungkinkan Anda untuk mengimplementasikan chat chat dengan cepat untuk mengotomatiskan tugas yang sama dari bisnis Anda tanpa biaya modal dan dengan sedikit tenaga kerja. Jika Anda sudah menggunakan bot obrolan dalam pekerjaan Anda, bagikan umpan balik dalam komentar tentang tayangan Anda dan, tentu saja, tayangan pelanggan Anda.