SMS και κλήσεις απευθείας από σενάριο στο Make
Το Make καλεί το REST API της volai μέσω της γενικής ενότητας HTTP - από το σενάριο στέλνετε SMS, ξεκινάτε κλήση μέσω φωνητικού πράκτορα και παίρνετε το αποτέλεσμα με webhook.
1Ετοιμάστε το κλειδί ως connection
Στην ενότητα HTTP > Make a request προσθέστε κεφαλίδα Authorization με τιμή Bearer vk_TVUJ_KLIC (το κλειδί θα το βρείτε στην πύλη, στην ενότητα Βοηθός AI). Αποθηκεύστε το ως επαναχρησιμοποιήσιμη σύνδεση, ώστε να μη χρειάζεται να το ξαναγράφετε σε κάθε ενότητα ξεχωριστά.
2Στείλτε SMS από το σενάριο
Προσθέστε ενότητα HTTP > Make a request: μέθοδος POST, URL https://volai.cz/v1/messages, σώμα τύπου Raw (JSON) με τα πεδία to και body - τις τιμές αντιστοιχίστε τις απευθείας από το bundle της προηγούμενης ενότητας (γραμμή πίνακα, webhook) αντί να τις πληκτρολογείτε. Ενεργοποιήστε το Parse response, ώστε τα priceHal (η τιμή σε εκατοστά της κορώνας για όλα τα τμήματα) και segments από την απάντηση να αναλυθούν αμέσως στο bundle για περαιτέρω αντιστοίχιση - χωρίς αυτό παίρνετε μόνο ακατέργαστο κείμενο και θα χρειαζόσασταν ξεχωριστή ενότητα Parse JSON. Σε κείμενο με διακριτικά ή ειδικούς χαρακτήρες προκύπτουν περισσότερα τμήματα απ' ό,τι σε μήνυμα καθαρά ASCII.
{
"to": "+420777123456",
"body": "Objednavka je pripravena k vyzvednuti."
}3Ξεκινήστε κλήση μέσω φωνητικού πράκτορα
Προσθέστε δεύτερη ενότητα HTTP > Make a request: POST https://volai.cz/v1/calls, σώμα Raw (JSON) με to και agentId υπάρχοντος φωνητικού πράκτορα - ο πράκτορας πρέπει να έχει αντιστοιχισμένο δικό του αριθμό, αλλιώς το αίτημα θα τελειώσει με σφάλμα agent_no_number. Το πεδίο to συνήθως δεν το γράφετε χειροκίνητα, αλλά το αντιστοιχίζετε από το bundle της προηγούμενης ενότητας (για παράδειγμα τον τηλεφωνικό αριθμό από μια γραμμή του Google Sheets) - κάντε κλικ στο πεδίο και επιλέξτε τη μεταβλητή από το μενού. Και εδώ ταιριάζει το Parse response: αναλύει το id της κλήσης που ξεκίνησε αμέσως στο bundle, ώστε να μπορεί να αντιστοιχιστεί παρακάτω χωρίς ξεχωριστή ενότητα Parse JSON. Η ενότητα απλώς ξεκινά την κλήση - το πραγματικό αποτέλεσμα (ολοκληρώθηκε, δεν απαντήθηκε, απέτυχε) θα το μάθετε μόνο από το webhook στο επόμενο βήμα.
{
"to": "+420777123456",
"agentId": "ag_kx91fa2b"
}4Λάβετε τα συμβάντα πίσω μέσω Custom webhook
Προσθέστε ενότητα Webhooks > Custom webhook - το Make σάς δημιουργεί ένα URL και επιβεβαιώνει αμέσως το αίτημα που έλαβε (πληροί τον όρο της γρήγορης απάντησης 200 από το /docs/webhooky). Την ίδια διεύθυνση αποθηκεύστε με PUT /v1/webhook, μαζί με τη λίστα των συμβάντων που σας ενδιαφέρουν. Προσοχή: ένας κενός πίνακας events δεν σημαίνει κανένα συμβάν, αλλά όλα - καλύτερα να τα απαριθμείτε πάντα. Η απάντηση επιστρέφει και ένα secret - αποθηκεύστε το αμέσως, το GET /v1/webhook δεν θα το επιστρέψει ξανά.
curl -X PUT https://volai.cz/v1/webhook \
-H "Authorization: Bearer vk_TVUJ_KLIC" \
-H "Content-Type: application/json" \
-d '{"url": "https://hook.eu2.make.com/xxxxxxxx", "events": ["call.completed", "message.sent"]}'5Διακλαδώστε το σενάριο ανάλογα με τον τύπο του συμβάντος
Το πεδίο event στο σώμα του webhook (call.completed, call.failed, call.no_answer, call.missed, message.sent, message.received) διαχωρίστε το με ενότητα Router ή με φίλτρο στη σύνδεση του κλάδου. Την επαλήθευση της υπογραφής Volai-Signature (HMAC-SHA256 πάνω στο {t}.{rawBody} με το secret σας) συμπληρώστε σύμφωνα με τον ακριβή τύπο στο /docs/webhooky - σε ευαίσθητο σενάριο (πληρωμές, εγγραφή στη λογιστική) μην την παραλείπετε.
Τι μπορείτε να κάνετε
Ο Iterator στέλνει SMS σε ολόκληρη λίστα επαφών
Η ενότητα Iterator αναλύει έναν πίνακα επαφών (για παράδειγμα από το Google Sheets ή από πίνακα JSON) σε μεμονωμένα στοιχεία και η ενότητα HTTP καλεί στη συνέχεια το POST /v1/messages ξεχωριστά για καθένα - τυπικά μαζική ανακοίνωση ή υπενθύμιση για ολόκληρη ομάδα πελατών ταυτόχρονα.
Το φίλτρο στη σύνδεση αποφασίζει ποιον θα καλέσετε
Το Make επιτρέπει να τοποθετήσετε συνθήκη απευθείας στη σύνδεση μεταξύ δύο ενοτήτων - το φίλτρο αφήνει να περάσουν μόνο οι γραμμές που πληρούν τη συνθήκη (για παράδειγμα το ραντεβού είναι αύριο και ο πελάτης δεν το έχει επιβεβαιώσει ακόμη) και μόνο αυτές ενεργοποιούν την ενότητα HTTP προς το POST /v1/calls.
Ο error handler πιάνει την αποτυχημένη κλήση
Στην ενότητα HTTP που καλεί το /v1/calls προσθέστε διαδρομή error handler με την οδηγία Ignore - η αποτυχία μίας κλήσης (για παράδειγμα άκυρος αριθμός) καταγράφεται σε πίνακα ή στέλνεται στο Slack για χειροκίνητο έλεγχο, χωρίς να καταρρεύσει ολόκληρο το σενάριο.
Συχνές ερωτήσεις
- Υπάρχει ειδική εφαρμογή της volai στο Make marketplace;
- Προς το παρόν όχι - αρκούν οι γενικές ενότητες HTTP και Webhooks, που το Make έχει πάντα διαθέσιμες. Η δική μας εφαρμογή στο Make εξαρτάται από το Make Technology Partner Program, το οποίο προς το παρόν δεν το επιδιώκουμε.
- Πόσες λειτουργίες καταναλώνει ένα σενάριο με δύο ενότητες HTTP;
- Κάθε εκτέλεση ενότητας μετράει ως μία λειτουργία - ένα σενάριο που καλεί το
/v1/messagesκαι μετά το/v1/callsκαταναλώνει περίπου δύο έως τρεις λειτουργίες ανά εκτέλεση, ανάλογα με το πόσες ενότητες παρεμβάλλονται. Το όριο λειτουργιών το καθορίζει το πλάνο σας στο Make, όχι η volai. - Πώς ορίζω error handler πάνω από την ενότητα HTTP, ώστε η αποτυχία μίας κλήσης να μη σταματά ολόκληρο το σενάριο;
- Κάντε δεξί κλικ στην ενότητα HTTP και προσθέστε διαδρομή error handler. Μέσα επιλέξτε την οδηγία Ignore - το σενάριο αγνοεί το σφάλμα και συνεχίζει, σαν η ενότητα να μην επέστρεψε καμία έξοδο. Αν οι επόμενες ενότητες χρειάζονται εναλλακτική τιμή αντί για την έξοδο που λείπει, χρησιμοποιήστε το Resume με δική σας εφεδρική έξοδο. Στο Break καταφύγετε μόνο όταν θέλετε να σταματήσετε αμέσως την εκτέλεση και να την επαναλάβετε μετά χειροκίνητα ή αυτόματα.
- Γιατί το Custom webhook επιστρέφει `Accepted` αμέσως, πριν ολοκληρωθεί το σενάριο;
- Έτσι λειτουργεί από προεπιλογή η ενότητα Custom webhook - επιβεβαιώνει τη λήψη με κατάσταση 200 και το κείμενο
Acceptedάμεσα, και το σενάριο ολοκληρώνεται στη συνέχεια στο παρασκήνιο. Στον καλούντα (για παράδειγμα τη volai) αρκεί να λάβει 200 μέσα σε λίγα δευτερόλεπτα - και αυτό ικανοποιείται. - Γιατί η ενότητα HTTP συνεχίζει αμέσως μετά το POST /v1/calls, ακόμη κι αν η κλήση δεν έχει τελειώσει;
- Το
POST /v1/callsαπλώς ξεκινά την κλήση και επιστρέφει τοidτης - σύγχρονα, μέσα σε μια στιγμή. Αν η κλήση πράγματι απαντήθηκε, ολοκληρώθηκε ή απέτυχε, θα το μάθετε αργότερα μέσω του webhookcall.completed/call.failed/call.no_answer/call.missed. Το σενάριο επομένως δεν χρειάζεται να περιμένει ούτε να κάνει polling - αρκεί να συνδέσετε σε αυτό το αποτέλεσμα την ενότητα Custom webhook που περιγράφεται παραπάνω.
Δοκιμάστε το αμέσως
Εγγραφείτε και τα πρώτα 50 kr υπολοίπου τα προσφέρουμε εμείς.