Όπως λέει και ο τίτλος θα ήθελα να τρέζω ένα SQL query όπως θα το έτρεχα εάν ήμουν μεσω ssh συνδεδεμένος στην mysql.
Επί της ουσίας θέλω να φτιάξω ένα dialplan όπου αν κάποιο extension καλέσει για παράδειγμα το 888 θα ενημερωθεί ένα πεδίο στην βάση που έχω φτιάξει.
Ας πούμε ότι η βάση ονομάζεται demo
To query είναι : UPDATE table_name SET status = '1' WHERE username = "${CDR(accountcode)}"
Να πω ότι χρησιμοποιώ FreePBX distro 14.0.13.28 και asterisk Asterisk 15.7.3.
H mysql Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1
Με λίγο ψάξιμο είδα αυτό το λινκ https://www.voip-info.org/asterisk-cmd-mysql/ το οποίο όμως νομίζω ότι πλέον δεν είναι ενήμερο για την έκδοση του asterisk και της Mysql που έχω οπότε και με το παράδειγμα που είχε δεν μπόρεσα να καταφέρω κάτι.
Έχει κάποιος να προτείνει κάτι;
Εμφάνιση 1-8 από 8
-
04-05-20, 13:32 SQL query execution on dialplan #1
-
04-05-20, 14:38 Απάντηση: SQL query execution on dialplan #2
Μπορείς να το κάνεις με κάποιο agi script.
Ένα παράδειγμα είναι αυτό και αυτό.
Ένα εισαγωγικό
-
04-05-20, 14:47 Απάντηση: SQL query execution on dialplan #3
Kronos σε ευχαριστώ για την απάντησή σου.
Η αλήθεια είναι ότι είχα βρει και την λύση που προτάθηκε για το script αλλά λόγω του ότι δεν είμαι εξοικιωμένος με την php μου φάνηκε πιο εύκολο και λογικό να προσπαθήσω να το υλοποιήσω πάνω στο dialplan.
Βάση του λινκ που ανέφερα δείχνει να είναι πολύ εύκολο απλά μάλλον δεν υποστηρίζεται για τις εκδόσεις που τρέχω.
Θα δω ωστόσο και την λύση που προτείνεις.
-
04-05-20, 15:12 Απάντηση: SQL query execution on dialplan #4
Το 888 μπορεί να είναι και δεκαψήφιο; Θες να τρέχει το query μόνο σε εξερχόμενη προς τον συγκεκριμένο αριθμό ή και σε εισερχόμενη από αυτόν; Επίσης η βάση που βρίσκεται, στο ίδιο μηχάνημα με το freepbx ή σε remote host;
-
04-05-20, 15:21 Απάντηση: SQL query execution on dialplan #5
-
04-05-20, 17:39 Απάντηση: SQL query execution on dialplan #6
Για αρχή, πας εδώ
https://wiki.asterisk.org/wiki/displ...MySQL+via+ODBC
και συγκεκριμένα στο section Configure the MariaDB ODBC connector
Αφού τα κάνεις αυτά, τρέχεις τις εντολές
odbcinst -q -d
odbcinst -q -s
η πρώτη αν σου βγάλει αποτέλεσμα σημαίνει ότι δεν έκανες κάτι λάθος και βλέπει ακόμα τον driver, η δεύτερη ότι διάβασε το connection που πρόσθεσες.
Έπειτα πας εδώ
https://wiki.asterisk.org/wiki/displ...uring+res_odbc
και συγκεκριμένα στο Configure res_odbc.conf to connect to your ODBC installation.
Απλά αντί να ρίξεις το config σου στο αρχείο που λέει θα το βάλεις στο _custom για να μείνει.
Μετά πας εδώ
https://www.voip-info.org/asterisk-func-funcodbc/
Example 1 για να δεις που πρέπει να βάλεις το query σου και τέλος βάλε αυτό στο extensions_custom.conf
exten => 888,1,NoOp(Test)
same => n,Set(ODBC_PRESENCE=${CDR(accountcode)}) ->αντί για presence θα βάλεις την λέξη που έβαλες ανάμεσα στα [ ] στο προηγούμενο βήμα
same => n,Hangup()
Φτάσε μέχρι εδώ και μετά βλέπεις τι ορίζεις σαν extension στο τελευταίο βήμα.
-
04-05-20, 19:55 Απάντηση: SQL query execution on dialplan #7
Οι εντολές odbcinst -q -d και odbcinst -q -s μου εμφανίζουν πλέον
Στο δεύτερο βήμα με το res_odbc_custom.conf βάζω το αντίστοιχο περιεχόμενο με βάση το λινκ. Ωστόσο στο τρίτο βήμα από όσο κατάλαβα ζητάει να κανω recompile τον asterisk, η εντολή odbc show μου εμφανίζει:
Είναι απαραίτητο αυτό το βήμα; Δεν κατέβασα τον asterisk από source αλλά χρησιμοποίησα το AsteriskNOW κατά την αρχική εγκατάσταση. Επίσης είναι ένα μηχάνημα το οποίο λειτουργώ εδώ και καιρό και δεν θα ήθελα να χάσω πιθανά δεδομένα (αρχεία κλήσεων κ.α)
Τέλος σχετικά με το func_odbc.conf, θα έπρεπε να βρίσκεται στο /etc/asterisk/ γιατί δεν το έχω ή θα υπήρχε εφόσον έκανα recompile.
Σε ευχαριστώ για τον χρόνο σου και τις απαντήσεις σου.
- - - Updated - - -
Τελικά το κατάφερα χρησιμοποιώντας agi script.
Σας ευχαριστώ για την βοήθεια.
-
04-05-20, 21:21 Απάντηση: SQL query execution on dialplan #8
Όχι δεν χρειαζόταν compile αλλά αφού έβγαλες άκρη.
Bookmarks