yemot-router
Version:
Because I do not know English, the documents are now in Hebrew. With the help of God in teaching English, I'll translate that.
370 lines (240 loc) • 11.7 kB
Markdown
# yemot-router
Because I do not know English, the documents are now in Hebrew.
With the help of God in teaching English, I'll translate that.
<div dir="rtl" text-align="right">
לתכנת מערכות מתקדמות ב'ימות-המשיח' בקלות באמצעות [מודול API](https://f2.freeivr.co.il/post/76).
# התקנה (NodeJS)
<div dir="ltr" text-align="left">
```bash
npm i yemot-router
```
<div dir="rtl" text-align="right">
# שימוש
התקשורת עם המשתמש, נעשית דרך האובייקט `Call`.
מחלקת הראוטר מקבלת כפרמטר פונקציית קולבק (CallBack), שהפרמטר שלה הוא אובייקט ה`Call`.
עם המתודות של האובייקט הזה, ניתן להפעיל ולהפנות את המשתמש.
# Change log
<details>
<summary>4.0.0</summary>
בגרסה 4.0.0 שינוי משמעותי:
במקום לבדוק בכל פעם את המאפיין `hangup`,
כעת בעת ניתוק, פשוט תיזרק שגיאה.
ניתן לתפוס אותה להתנהגות מותאמת אישית (ראה דוגמה בקובץ `exemple.js/.`),
או להתעלם, לעצירה של הסקריפט.
</details>
# דוגמא בסיסית
<div dir="ltr" text-align="left">
./exemple.js
<div dir="rtl" text-align="right">
# מתודות אובייקט ה`Call`
<div dir="ltr" text-align="left">
### `read(massage : [], mode : string, options : {}) : Promise`
מתודה לשאילת שאלה את המשתמש, וקבלת התשובה מתי שתגיע, ע"י הבטחה (Promise).
<details>
<div dir="rtl" text-align="right">
#### הפרמטר `massage`
הפרמטר הראשון, הוא השאלה שהמשתמש ישמע. מערך של אובייקטים, שכל אחד מהם הוא קובץ או הקראה, שתושמע למשתמש.
טקסט שיוקרא למשתמש:
<div dir="ltr" text-align="left">
```js
let massage = [{ type: "text", data: "היי, תקיש 10" }];
let massage = [{ type: "text", data: "היי, תקיש 10" }];
```
<div dir="rtl" text-align="right">
השמעת קובץ במערכת:
<div dir="ltr" text-align="left">
```js
let massage = [{ type: "file", data: "000" }];
```
<div dir="rtl" text-align="right">
השמעת מספר:
<div dir="ltr" text-align="left">
```js
let massage = [{ type: "number", data: "512" }];
```
<div dir="rtl" text-align="right">
השמעת ספרות:
<div dir="ltr" text-align="left">
```js
let massage = [{ type: "digits", data: "077313770" }];
```
<div dir="rtl" text-align="right">
הקראת קובץ טקסט הנמצא במערכת:
<div dir="ltr" text-align="left">
```js
let massage = [{ type: "speech", data: "000" }];
```
<div dir="rtl" text-align="right">
הקראת אותיות באנגלית:
<div dir="ltr" text-align="left">
```js
let massage = [{ type: "alpha", data: "abc.com" }];
```
<div dir="rtl" text-align="right">
#### הפרמטר `mode`
הפרמטר הזה קובע, האם לקבל תשובה, ע"י הקשה, זיהוי דיבור, או הקלטה.
האפשרויות:
<div dir="ltr" text-align="left">
`tap` = הקשה
`stt` = זיהוי דיבור
`record` = הקלטה
<div dir="rtl" text-align="right">
#### הפרמטר `options`
בפרמטר הזה, ניתן להעביר אפשרויות נוספות, כגון סך הקשות מינימלי, מקסימלי, וכו'.
##### ערכי ברירת מחדל - הקשה
<div dir="ltr" text-align="left">
```js
let options = {
/* שם הערך בימות
ברירת מחדל, נקבע אוטומטית,
val_1, val_2 ... */
val_name: "val_x",
/* האם לבקש את הערך שוב אם קיים. */
re_enter_if_exists: false,
/* כמות ההקשות המקסימלית */
max: "*",
/* כמות ההקשות המינימלית */
min: 1,
/* שניות להמתנה */
sec_wait: 7,
/* צורת ההשמעה למשתמש את הקשותיו */
/* באם מעוניינים במקלדת שונה ממקלדת ספרות, כגון EmailKeyboard או HebrewKeyboard, יש להכניס כאן את סוג המקלדת
[ראו exemple.js]
האופציות הקיימות:
"Number" | "Digits" | "File" | "TTS" | "Alpha" | "No" | "HebrewKeyboard" |
"EmailKeyboard" | "EnglishKeyboard" | "DigitsKeyboard" | "TeudatZehut" |
"Price" | "Time" | "Phone" | "No"
פירוט על כל אופציה ניתן למצוא בתיעוד מודול API של ימות המשיח, תחת"הערך השישי (הקשה)".
*/
play_ok_mode: "No",
/* האם לחסום הקשה על כוכבית */
block_asterisk: false,
/* האם לחסום הקשה על אפס */
block_zero: false,
/* החלפת תווים*/
replace_char: "",
/* ספרות מותרות להקשה - מערך
[1, 2, 3 ...]
*/
digits_allowed: [],
/* אחרי כמה שניות להשמיע שוב את השאלה */
amount_attempts: "",
/* אם המשתמש לא ענה, האם לשלוח ערך*/
read_none: false,
/* הערך שיישלח באין תשובה */
read_none_var: ""
/* האם לחסום שינוי שפת מקלדת */
block_change_type_lang: false,
}
```
<div dir="rtl" text-align="right">
##### ערכי ברירת מחדל - זיהוי דיבור:
<div dir="ltr" text-align="left">
```js
let options = {
lang: "",
allow_typing: false,
};
```
<div dir="rtl" text-align="right">
##### ערכי ברירת מחדל - הקלטה
<div dir="ltr" text-align="left">
```js
let options = {
path: "",
file_name: "",
record_ok: true,
record_hangup: false,
record_attach: false,
lenght_min: "",
lenght_max: "",
};
```
</details>
### `go_to_folder(folder: string): void`
מתודה להעברת השיחה לשלוחה מסוימת במערכת הנוכחית.
ניתן לכתוב נתיב יחסי לשלוחה הנוכחית או לשלוחה הראשית. פירוט על האופציות ניתן לקרוא [כאן](https://f2.freeivr.co.il/post/58).
ניתן להעביר בפרמטר folder את הסטרינג `hangup`, וכך לנתק את השיחה.
### `restart_ext()`
מתודה פשוטה ללא ארגומנטים להפעלה מחדש של השלוחה הנוכחית.
זהה לכתיבה הבאה:
```js
go_to_folder(`/${call.ApiExtension}`);
```
### `id_list_message(massages: array, wait_to_more_action: Boolean)`
במתודה זו ניתן להשמיע למשתמש הודעה אחת, או מספר הודעות ברצף.
---
<div style="border: 1.5px solid; color: #ff6037" dir="rtl">
באם מעוניינים לשרשר פעולה נוספת, לדוגמה להשמיע הודעה ואז לבצע <code>read</code> (קבלת נתונים נוספים), יש להעביר לארגומנט השני <code>true</code>.
באם אחרי השמעת ההודעה מעוניינים שהמאזין ייצא מהשלוחה, ניתן להשאיר את הפרמטר השני ריק.
</div>
---
<details>
הפונקציה מקבלת כארגומנט ראשון מערך של אובייקטי הודעה. כל אובייקט במערך צריך להיות במבנה הבא:
```js
{ type: string, data: string }
```
ואם ה`type` הוא `zmanim`:
```js
{ type: string, data: object }
```
ראה פירוט נוסף להלן.
#### הפרמטר `type`
הערך `type` מקבל סטרינג של סוג ההשמעה.
האפשרויות הקיימות עבור type הן:
- `file` - השמעת קובץ מתוך המערכת או מהמאגר הגלובלי
- `digits` - השמעת ספרות (לדוגמה 111 המערכת תשמיע "אחת אחת אחת")
- `number` - השמעת מספר (לדוגמה 111 המערכת תשמיע "מאה ואחת עשרה")
- `alpha` - השמעת אותיות (לדוגמה abc המערכת תשמיע "איי בי סי")
- `text` - הקראת טקסט
- `speech` - הקראת טקסט מתוך קובץ במערכת
- `zmanim` - השמעה שעה לפי משתנה
- `go_to_folder` - מעבר לשלוחה אחרת (לא ניתן לשרשר הודעות/פקודות נוספות לאחר פקודה זו)
- `system_message` - השמעת הודעת מערכת (מקבל ב`data` את מספר ההודעה, עם או בלי `M` בהתחלה.)
- `music_on_hold` - מוזיקה בהמתנה
- `date` - השמעת תאריך לועזי (יש לכתוב את התאריך בפורמט dd/mm/yyyy)
- `dateH` - השמעת תאריך עברי (יש לכתוב את התאריך הלועזי בפורמט dd/mm/yyyy)
#### הפרמטר `data`
הערך `data` מקבל את תוכן ההודעה להשמעה - עבור השמעת ספרות/אותיות/טקסט, או את נתיב הקובץ/התקיה עבור file/go_to_folder (בהתאמה).
חריג הוא הטייפ **zmanim**:
עבור השמעת זמנים (כלומר אם הערך של type הוא `zmanim`), הערך השני (`data`) יהיה **אובייקט**, ולא סטרינג, במבנה הבא:
```js
{
time: string, // optional, default: "T" (current time)
zone: string,
difference: string // optional, default: "IL/Jerusalem"
}
```
#### הערך `time`:
סוג הזמן שרוצים להשמיע.
ברירת מחדל: "`T`" = השעה הנוכחית.
#### הערך `zone`:
אזור הזמן שעבורו יש לחשב את הזמנים.
ברירת מחדל: `IL/Jerusalem`.
ניתן לראות [כאן](https://f2.freeivr.co.il/post/82868) את רשימת אזורי הזמן הקיימים במערכת.
ניתן לראות [כאן](https://f2.freeivr.co.il/post/82875) את רשימת הזמנים האפשריים.
#### הערך `difference`:
ערך זה משמש להוספה/הסרה מלאכותית של זמן על הזמן שמשמיעים.
באם לא יועבר פרמטר זה, יושמע הזמן ללא שינוי.
הערך **`difference`** מכיל קודם את סוג הפעולה - פלוס (+) להוספת זמן, או מינוס (-) להפחתת זמן, ואז את הזמן על פי הצורה הבאה: Y - שנה M - חודש D - יום H - שעה m - דקה S - שניה s - אלפית שניה למשל, עבור 20 דקות אחורה יש להגדיר `m20-`, עבור 3 שעות קדימה יש לרשום `H3+`. עבור יומיים אחורה יש לרשום `D1-`.
לדוגמה, עבור השמעת זמן שקיעת החמה מחר בעיר בני ברק:
```js
let massage = [
{
type: "zmanim",
data: {
time: "sunset",
zone: "IL/Bney_Brak",
difference: "+1D",
},
},
];
```
</details>
### `routing_yemot(phone: string)`
מתודה להעברת השיחה למערכת אחרת בימות המשיח ללא עלות יחידות, באמצעות "ראוטינג ימות".
הפונקציה מקבלת ארגומנט יחיד - סטרינג של מספר מערכת בימות להעברת השיחה.
ניתן גם לנתב את השיחה ממערכת בשרת הפריווט לשרת הרגיל ולהיפך.
### `send(data: string)`
ניתן להשתמש במתודה זו כדי לשלוח סטרינג חופשי לחלוטין, לדוגמה עבור פונקציונליות שעדיין לא נתמכת בספרייה.
באופציה זו יש להעביר את הסטרינג בדיוק כפי שמעוניינים שהשרת של ימות יקבל אותו.