first
This commit is contained in:
55
README.md
Normal file
55
README.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# Callback AGI
|
||||
|
||||
این پروژه یک AGI برای Asterisk است که قبل از IVR، آخرین تماس خروجی ناموفق
|
||||
به مشتری را در یک ساعت گذشته پیدا میکند. رکورد با مقدار `target = 'pending'`
|
||||
بهصورت اتمیک قفل میشود؛ در صورت پاسخ داخلی، مقدار آن به `callback_done`
|
||||
تغییر میکند و در غیر این صورت قفل آزاد شده و تماس به IVR میرود.
|
||||
|
||||
## ساخت و نصب
|
||||
|
||||
```bash
|
||||
./mvnw package
|
||||
install -m 0755 scripts/callback-agi /var/lib/asterisk/agi-bin/callback-agi
|
||||
```
|
||||
|
||||
مسیر JAR را با متغیر `CALLBACK_AGI_JAR` تنظیم کنید. اسکریپت باید در نقطه ورود
|
||||
تماس ورودی بهعنوان AGI موجود نصب شود؛ خود پروژه نیازی به تغییر dialplan ندارد.
|
||||
|
||||
برای اجرای محلی از ریشه پروژه، wrapper بهصورت خودکار JAR داخل `target/` را
|
||||
پیدا میکند:
|
||||
|
||||
```bash
|
||||
./mvnw clean package
|
||||
printf 'agi_callerid: 09121234567\nagi_dnid: 02112345678\n\n' | ./scripts/callback-agi
|
||||
```
|
||||
|
||||
این برنامه یک AGI غیر وب است و بدون آرگومان اجرا میشود. برنامه ورودی AGI را
|
||||
از stdin میخواند و تنظیمات آن از `application.properties` خوانده میشوند.
|
||||
|
||||
```bash
|
||||
./mvnw spring-boot:run
|
||||
```
|
||||
|
||||
## تنظیمات
|
||||
|
||||
تمام تنظیمات در فایل
|
||||
[`CALLBACK-CONFIG.md`](CALLBACK-CONFIG.md) مستند شدهاند.
|
||||
مقادیر را مستقیماً در `src/main/resources/application.properties` تغییر دهید.
|
||||
|
||||
مقدار `agi_callerid` نرمال میشود؛ پیشوندهای `+98`، `0098` و صفر ابتدایی،
|
||||
فاصله و خط تیره حذف میشوند. `agi_dnid` برای ثبت رکورد لازم نیست و برای
|
||||
تطبیق callback عمداً استفاده نمیشود.
|
||||
|
||||
## نکات دیتابیس
|
||||
|
||||
برای سرعت lookup، در صورت امکان migration زیر را اجرا کنید:
|
||||
|
||||
```sql
|
||||
CREATE INDEX IF NOT EXISTS idx_callback_lookup
|
||||
ON tbl_cdr (real_dst, calldate DESC)
|
||||
WHERE direction_call = 'outbound'
|
||||
AND disposition IN ('NO ANSWER', 'BUSY', 'FAILED');
|
||||
```
|
||||
|
||||
ستون `target` باید nullable باشد. نام و رمز عبور دیتابیس را در source code
|
||||
قرار ندهید.
|
||||
Reference in New Issue
Block a user