Maklumat Umum

Chatbot untuk tempahan dalam talian ialah satu set fungsi pembina corong yang membolehkan anda mengautomasikan proses penjadualan perkhidmatan untuk syarikat anda.

Aliran kerja bot adalah berdasarkan pelaksanaan fungsi secara berurutan: menerima data untuk dipaparkan kepada pelanggan, kemudian menghantar data ini untuk mencetuskan fungsi baharu dan mendapatkan hasil baharu.

Semasa pelanggan bergerak melalui corong, anda harus menghantar ke setiap blok seterusnya hanya data yang sepadan dengan pilihan pelanggan—gunakan data ini untuk mengkonfigurasi panggilan fungsi seterusnya.

Terima kasih kepada keupayaan untuk mendapatkan data perantaraan (contohnya, jawatan pekerja dan kategori perkhidmatan) dan menghantarnya untuk menapis pekerja dan perkhidmatan, anda boleh mengkonfigurasi corong anda secara fleksibel dan memberi pelanggan kawalan ke atas langkah-langkah perkembangannya.

Semua kaedah yang diterangkan dalam artikel ini mengembalikan tatasusunan kamus.

Untuk kerja yang mudah dengannya, kami mengesyorkan menyemak bahagian Tatasusunan dan Kamus.

Juga, untuk menggunakan fungsi menjana tindakan pengguna (pemilihan perkhidmatan, tarikh, tempahan), kami mencadangkan untuk mempertimbangkan kaedah tools_make_button_str_checker.

Di bawah ialah gambar rajah aliran kerja bot, di mana setiap blok gambar rajah mewakili panggilan fungsi tertentu, dan anak panah menunjukkan aliran data yang dihantar dari blok ke blok. Maklumat yang dihantar dalam aliran ini membolehkan anda menapis data yang diminta, serta membuat, membatalkan atau mengubah suai masa tempahan.

Untuk melihat gambar rajah konfigurasi terperinci chatbot tempahan dalam talian dengan fungsi yang digunakan, rujuk bahagian Contoh Pelaksanaan Bot dalam artikel ini.

Mendapatkan Maklumat Cawangan

Untuk membuat corong tempahan dalam talian dan mendapatkan maklumat tentang cawangan projek, gunakan fungsi get_companies_for_booking.

Fungsi ini mengembalikan senarai yang mengandungi data untuk setiap cawangan (corong) yang mempunyai “Tempahan Dalam Talian” didayakan dalam tetapannya.

Data disediakan sebagai pasangan kunci-nilai dan termasuk pengecam cawangan (id), nama (name), dan alamat (address).

Fungsi ini tidak mengambil sebarang parameter.

Contoh penggunaan:

Panggilan fungsi dalam blok:

Contoh data yang dikembalikan:

Mendapatkan maklumat tentang jawatan atau kategori perkhidmatan

Fungsi get_categories_for_booking(company_id) membolehkan anda mendapatkan senarai semua jenis pakar atau kategori perkhidmatan untuk cawangan.

Setiap item dalam senarai yang dikembalikan mengandungi pengecam (id), nama (name), dan penerangan (description) jawatan atau kategori perkhidmatan. Data diwakili sebagai pasangan "kunci-nilai":

Parameter:

Contoh penggunaan:

Contoh panggilan fungsi dalam blok kod:

Mendapatkan maklumat tentang pekerja

Jika anda perlu memberikan maklumat tentang pekerja cawangan, gunakan fungsi get_employees_for_booking.

Panggilan akan mengembalikan senarai data yang mengandungi pengecam pekerja (id), nama (name), maklumat (information), dan jawatan (job_title).

Anda juga boleh menapis pekerja mengikut senarai perkhidmatan, jawatan, atau kategori perkhidmatan. Untuk berbuat demikian, hantar parameter tambahan dalam panggilan fungsi: service_ids, job_title_id, atau service_category_id.

Susunan parameter:

company_id -> service_ids -> job_title_id -> service_category_id

Parameter:

Nota:

Jika anda ingin mendapatkan semua pekerja cawangan, biarkan nilai untuk service_ids, job_title_id, dan service_category_id kosong.

  • Contoh panggilan: get_employees_for_booking(14275391)

Untuk menapis pekerja mengikut senarai ID perkhidmatan, hantar senarai sebagai parameter kedua dan biarkan job_title_id dan service_category_id kosong.

  • Contoh panggilan: get_employees_for_booking(14275391, [844, 845])

Untuk menapis pekerja mengikut jawatan, hantar ID ke parameter job_title_id dan biarkan service_ids dan service_category_id kosong.

  • Contoh panggilan: get_employees_for_booking(14275391, “”, 1021)

Untuk mendapatkan pekerja yang menyediakan perkhidmatan kategori tertentu, biarkan service_ids dan job_title_id sebagai rentetan kosong, dan hantar ID kategori yang dipilih ke service_category_id.

  • Contoh panggilan: get_employees_for_booking(14275391, “”, “”, 1019)

Contoh penggunaan:

Panggilan fungsi dalam blok kod:

Contoh data yang dikembalikan:

Mendapatkan maklumat tentang perkhidmatan

Untuk mendapatkan maklumat tentang perkhidmatan yang disediakan oleh cawangan, gunakan fungsi get_services_for_booking.

Hasil daripada panggilan, bot akan mengembalikan senarai yang mengandungi data perkhidmatan. Setiap entri perkhidmatan termasuk pengecam (id), nama (title), penerangan (description), harga (price), dan tempoh perkhidmatan dalam minit (duration).

Anda boleh menapis senarai yang terhasil mengikut kategori perkhidmatan, mengikut pekerja, atau mengikut kedua-dua kategori perkhidmatan dan pekerja secara serentak. Untuk berbuat demikian, hantar parameter tambahan service_category_id dan/atau employee_id semasa memanggil fungsi.

Susunan parameter:

company_id -> service_category_id -> employee_id

Parameter:

Nota kepada bahagian “Parameter”:

Jika anda ingin mendapatkan semua perkhidmatan cawangan, biarkan nilai service_category_id dan employee_id kosong.

  • Contoh panggilan: get_services_for_booking(14275391)

Jika anda ingin menapis perkhidmatan mengikut kategori dan/atau pekerja, hantar pengecam yang sepadan ke dalam parameter service_category_id dan employee_id. Untuk menapis hanya dengan satu parameter, berikan rentetan kosong untuk parameter yang lain.

Contoh panggilan:

  • get_services_for_booking(14275391, 1018) - penapis kategori perkhidmatan;
  • get_services_for_booking(14275391, “”, 512978) - penapis pekerja;
  • get_services_for_booking(14275391, 1018, 463665) - penapis dengan kedua-dua parameter;

Contoh penggunaan:

Memanggil fungsi di dalam blok:

Contoh data yang dikembalikan:

Mendapatkan tarikh tempahan yang tersedia

Selepas pelanggan memilih perkhidmatan untuk ditempah, mereka perlu mendapatkan senarai tarikh tempahan yang tersedia.

Untuk menjana senarai ini, gunakan fungsi get_dates_for_booking.

Fungsi ini akan menyemak slot masa yang tersedia dan mengembalikan senarai tarikh yang sesuai dalam format “hari.bulan.tahun”.

Susunan parameter adalah seperti berikut:

company_id -> service_ids -> employee_id -> days_limit

Parameter:

Contoh penggunaan:

Memanggil fungsi di dalam blok:

Contoh data yang dikembalikan:

Mendapatkan slot tempahan yang tersedia

Untuk mendapatkan senarai slot tempahan yang tersedia, gunakan fungsi get_slots_for_booking.

Fungsi ini akan menyemak masa yang tersedia pada tarikh yang dipilih dan mengembalikan senarai slot percuma dalam format “jam:minit”, contohnya [“09:00”, “11:00”, “14:30”, “16:00”].

Susunan parameter adalah seperti berikut:

company_id -> service_ids -> employee_id -> slot_interval

Parameter:

Contoh penggunaan:

Panggilan fungsi dalam blok:

Contoh data yang dikembalikan:

Membuat tempahan

Untuk membuat tempahan dalam talian, gunakan fungsi create_booking.

Jika tempahan berjaya, fungsi akan mengembalikan maklumat tentang status operasi (status) dengan nilai True dan butiran tempahan (booking) dalam format “kunci: nilai”.

Data tempahan baharu termasuk:

  • pengecam (id),
  • tarikh (booking_date),
  • masa (booking_time),
  • nama perkhidmatan (services),
  • tempoh tempahan(service_duration),
  • jumlah kos (total_cost),
  • nama pekerja yang ditugaskan (employee_name), dan jawatannya (job_title),
  • nama cawangan (company_name) dan alamat cawangan (company_address)

dalam format “kunci: nilai”.

Susunan parameter:

company_id -> service_ids -> booking_date -> booking_time -> employee_id

Parameter:

Contoh penggunaan:

Panggilan fungsi dalam blok:

Contoh respons tempahan berjaya:

Apabila membuat tempahan dan kemudian meminta slot tersedia sekali lagi, anda akan perasan bahawa senarai telah dipendekkan. Sebagai contoh, pada 05.02.2024, slot 18:00 tidak lagi tersedia (ia hanya percuma dalam jadual Victoria), dan untuk Paul Thompson, tempahan untuk potongan rambut lelaki dan penggayaan janggut kini boleh dibuat dari 9:00 hingga 14:00, memandangkan jumlah tempoh perkhidmatan ialah 1 jam 45 minit, dan Pavel sudah mempunyai tempahan lain pada pukul 16:00.

Mendapatkan maklumat tentang tempahan akan datang pelanggan

Anda boleh melihat tempahan semasa pelanggan dengan memanggil fungsi get_bookings_info.

Respons akan mengembalikan senarai tempahan aktif, bersama dengan maklumat terperinci untuk setiap tempahan.

Maklumat tempahan disediakan dalam format “kunci: nilai” dan termasuk:

  • pengecam tempahan (booking_id),
  • tarikh (booking_date),
  • masa (booking_time),
  • pengecam (service_ids) dan nama (service_names) perkhidmatan yang dipilih,
  • tempoh tempahan (booking_duration),
  • jumlah kos perkhidmatan (total_cost),
  • pengecam (employee_id) dan nama (employee_name) pekerja yang ditugaskan, dan jawatannya (job_title),
  • pengecam cawangan (company_id)
  • nama cawangan (company_name) dan alamat (company_address).

Parameter:

Contoh penggunaan:

Panggilan fungsi dalam blok:

Contoh data yang dikembalikan:

Pelanggan boleh menukar tarikh dan masa tempahan secara bebas. Untuk berbuat demikian, mereka perlu mengakses blok corong di mana fungsi modify_booking_time dipanggil.

Jika operasi berjaya, fungsi akan mengembalikan status operasi (status) dengan nilai True dan mesej (message) “Masa tempahan diubah suai” dalam format “kunci: nilai”.

Susunan parameter:

order_id -> new_date -> new_time

Parameter:

Contoh penggunaan:

Panggilan fungsi dalam blok:

Respons bot untuk operasi yang berjaya:

Slot 16:00 yang sebelum ini diduduki kini tersedia untuk tempahan, dan membuat tempahan baharu untuk perkhidmatan yang sama kini hanya boleh dilakukan dari jam 11:00

Dalam maklumat tempahan pelanggan, anda juga akan melihat masa tempahan yang dikemas kini:

Membatalkan tempahan

Pelanggan boleh membatalkan tempahan sedia ada secara bebas. Untuk berbuat demikian, mereka perlu mengakses blok di mana fungsi cancel_booking dipanggil.

Pembatalan yang berjaya akan mengembalikan status operasi (status) dengan nilai True dan mesej (message) “Tempahan dipadam” dalam format “kunci: nilai”.

Susunan parameter:

pipeline_id -> order_id

Parameter:

Contoh penggunaan:

Panggilan fungsi dalam blok:

Respons bot untuk pembatalan yang berjaya:

Selepas pembatalan, slot “09:00” dan “10:00” tersedia untuk tempahan semula:

Contoh pelaksanaan bot

Tetapan chatbot

Blok №1. Mula. Tiada tindakan khas diperlukan

Blok №2. Dalam blok ini, kami mendapatkan data yang akan diberikan kepada pelanggan.

Penerangan kandungan kalkulator:

  • comp_id - pengecam blok perkhidmatan, yang boleh didapati di bahagian “Perkhidmatan”;
  • data - maklumat tentang perkhidmatan yang disediakan
  • res - kamus dengan data yang diperlukan untuk menjana butang dan menetapkan syarat
  • numbered_list - mungkin berguna jika senarai perkhidmatan perlu diduplikasi dalam bentuk teks
  • buttons - tatasusunan butang yang dijana daripada data perkhidmatan
  • checker - tatasusunan nama perkhidmatan, digunakan untuk menetapkan syarat untuk bergerak ke blok seterusnya

Blok №3. Dapatkan dan paparkan data tentang perkhidmatan yang dipilih.

title - dalam tatasusunan kamus data, cari kamus di mana kunci title sama dengan question. Daripada kamus itu, dapatkan nilai untuk kunci yang sama title

description - sama, dapatkan nilai untuk kunci description

price - sama, dapatkan nilai untuk kunci price

serv_id - sama, dapatkan nilai untuk kunci id

b - buat tatasusunan rentetan yang akan dipaparkan sebagai butang di bawah mesej

res - daripada tatasusunan b, buat tatasusunan kamus seperti dalam blok sebelumnya

buttons - dapatkan tatasusunan untuk memaparkan butang

Kini kami mempunyai pembolehubah yang mengandungi nama, penerangan, dan harga perkhidmatan yang dipilih oleh pelanggan

Blok №4. Paparkan tarikh tempahan yang tersedia

print_dates - gunakan fungsi untuk mendapatkan tarikh tempahan yang tersedia untuk perkhidmatan yang dipilih

print_dates - tambah rentetan “Kembali ke senarai perkhidmatan” ke tatasusunan tarikh jika anda mahu butang ini muncul bersama tarikh.

Untuk anak panah kembali ke langkah sebelumnya, tetapkan keutamaan yang lebih tinggi daripada anak panah dengan #{checker}, kerana #{checker} juga mengandungi syarat “Kembali ke senarai perkhidmatan”.

Blok №5.
Dalam blok №5 kami menyimpan tarikh yang dipilih oleh pelanggan. Ini perlu dilakukan dalam blok yang berasingan kerana pada peringkat seterusnya apabila kembali ke Blok 6, pembolehubah question tidak lagi mengandungi tarikh yang dipilih oleh pelanggan.

Blok №6. Pemilihan dan paparan slot tersedia untuk tempahan.

data - dapatkan slot yang tersedia.

Logiknya sama seperti dalam Blok №4 dengan paparan tarikh tersedia. Juga penting untuk tidak lupa menetapkan keutamaan yang lebih tinggi untuk anak panah “Kembali ke pemilihan tarikh”

Blok №7. Menyimpan masa yang dipilih ke dalam pembolehubah dan cuba menempah pelanggan.

choosed_time - simpan masa

a - cuba menempah pelanggan

booking_result - dapatkan hasil pelaksanaan fungsi.

Perlu mendapatkan hasil kerana beberapa orang mungkin cuba menempah pada masa yang sama pada satu masa.

Blok №7.1. Gagal menempah pelanggan.

Blok ini hanya diperlukan untuk mesej ralat. Selepas menghantar mesej, kembalikan pelanggan ke pemilihan masa untuk tempahan

Blok №8. Tempahan berjaya.

Maklumkan kepada pelanggan bahawa mereka telah ditempah untuk perkhidmatan dan paparkan butang untuk pembayaran.

Contoh tetapan butang.

Untuk tetapan, gunakan pembolehubah yang kami perolehi dalam blok №3:

Blok №8.1.

Dalam blok ini, sahkan pembayaran yang berjaya. Peralihan ke blok dikonfigurasikan mengikut sistem pembayaran yang digunakan

Blok №8.2. Pelanggan tidak membayar perkhidmatan. Pembatalan tempahan

Jika pelanggan tidak membayar perkhidmatan tepat pada masanya, kami boleh membatalkan tempahan, jika perlu.

or_id - dapatkan id pesanan

cancel_status - selepas melaksanakan fungsi, dapatkan jawapan sama ada pembatalan berjaya.

Dalam contoh ini, pelanggan akan masuk ke blok pembatalan 5 saat selepas menerima pautan pembayaran, dalam situasi sebenar anda boleh menetapkan jumlah masa yang diperlukan, yang penting jangan lupa untuk menghidupkan suis “Batal jika meninggalkan blok”.

Gambar rajah lengkap:

Demonstrasi

Panggil balik tentang tempahan

Ke dalam dialog dengan pelanggan selepas tempahan, panggil balik akan datang — pemberitahuan tentang tempahan — dalam bentuk berikut:

new_order_in_calendar - bahagian panggil balik yang tidak boleh diubah

[489046159] - order_id pengecam permohonan

Ditambah tempahan tarikh_dan_masa_tempahan

selama 30 minit - tempoh perkhidmatan

Objek: Ujian 30 - objek yang mana tempahan ditambah

Bentuk panggil balik itu sendiri:

new_order_in_calendar: [489046159] Ditambah tempahan dari 2025-06-01 14:00 hingga 2025-06-01 14:30 selama 30 minit. Objek: Ujian 30

Anda boleh mengkonfigurasi reaksi terhadap panggil balik dengan menulis nilai dalam syarat blok:

Dalam blok, anda boleh menulis mesej balas yang diperlukan kepada pelanggan.