הכלי הדיגיטלי למאבק בגזענות ממסדית
הדרכה והנחיות שימוש
הדרכה והנחיות שימוש
המערכת נועדה לסייע לנפגעות ונפגעי תופעות של גזענות ואפליה באופנים הבאים:
המערכת מלווה את התהליך בשלבים הבאים:
הפניה הראשונית יכולה להתרחש בכל יום ובכל שעה, מכל מכשיר עם חיבור לאינטרנט (טלפון נייד או מחשב נייח). אין צורך בהתקנת אפליקציה מיוחדת, רק בגלישה עם כל דפדפן סטנדרטי, לאתר המערכת.
שיחת ההמשך בין הפונה לנציג/ת הארגון תתקיים באמצעי התקשורת שבחר/ה הפונה.
בזמן השיחה, תלווה המערכת את נציג/ת הארגון בהנחיה כיצד להוביל את השיחה ותסייע לתעד את התשובות בצורה פשוטה ומסודרת.
בתום שיחת ההמשך בין הפונה לנציג/ת הארגון תוצג לנציג/ת הארגון רשימת משימות שנוצרה בהתאם לפרטי המקרה שנאספו בשיחה. נציג/ת הארגון יוכלו להוסיף משימות נוספות ולתעד את הטיפול וההתקדמות בביצוע המשימות.
מהם תסריטי השימוש
אחד מיתרונותיה של המערכת היא האפשרות לעדכן ולהתאים את השימוש למצבים משתנים ותחומים רחבים. תסריטי השימוש הם האופן בו מוגדרת התנהלות השיחה.
תסריטי השימוש נכתבים במבנה שנקרא YAML. היתרונות שלו הם שקל לבני אדם לקרוא ולערוך אותו, ושקל יחסית להמיר אותו בהמשך לקוד שהמחשב מבצע.
תסריטי השימוש נמצאים בפרוייקט הקוד שבקישור https://github.com/hasadna/reportit-scripts. הרעיון הוא שגם אנשים ללא מיומנויות פיתוח ותכנות, יוכלו תוכלו לפתוח את הקובץ, לסקור את מהלכי השיחה הקיימים, ולבצע שינויים או התאמות קלים. כל מה שנותר לבקש מהמפתח/ת שיעדכנו את תסריט המעודכן במערכת.
לאחר עדכון תסריט השימוש יש לבצע המרה שלו לקוד התוכנה – תוכלו לבקש מאיש/אשת הפיתוח שלכם להריץ את הממיר שנמצא בכתובת tool/yaml_to_json.py.
אם תהליך ההמרה עבר בשלום, אפשר לעדכן את האתר באמצעות הרצת הקובץ tools/deploy.sh.
חלקי השיחה (snippets)
יש שני כללים שחשוב להבין ולזכור כשכותבים או קוראים קבצי YAML:
עוד רגע נראה כמה דוגמאות.
קובץ של תסריט שימוש נפתח בשורות הבאות:
- description: תסריט לניהול שיחות מצד הפונה name: פונה
השורות הללו נותנות שם לתסריט שלפנינו ותיאור קצר, שיקלו על מי שיערכו ויעבדו איתו בהמשך להבין במה מדובר.הרבה פעמים אנחנו רוצים לשאול שאלות זהות בהקשרים שונים. למשל, לפעמים נרצה לבקש מהמשתמש להעלות קבצים אחרי שאלה מסויימת, ולפעמים נרצה לאפשר זאת בסוף השיחה. במקום לכתוב שוב ושוב את אותן השאלות, תסריטי השימוש מחולקים לרכיבי שיחה, או בלוקים, שאפשר להפנות אליהם או לעשות בהם שימוש חוזר.
לכן, ההגדרה הראשונה של קובץ התסריט היא snippets.
לדוגמה, בקובץ תסריט השימוש של הפניה הראשונית במערכת תמצאו שני סוגים של רכיבי שיחה:
א. רכיבי שיחה שמשותפים לכל סוג של פניה או תלונה:
snippets: - name: default steps: [ תוכן הבלוק] - name: "פרטי התקשרות: בחירת אמצעי יצירת קשר" steps: [ תוכן הבלוק] - name: "תלונה: בחירת תחום/גורם" steps: [ תוכן הבלוק] - name: "העלאת קבצים: האם להעלות קבצים?" steps: [ תוכן הבלוק] - name: "תלונה: הוספת מידע נוסף" steps: [ תוכן הבלוק]
ב. רכיבי שיחה שקשורים לפניות, על פי הגורם כלפי מוגשת התלונה, או סוג התלונה:
- name: "בריאות: בחירת הגורם הפוגע" steps: [ תוכן הבלוק] - name: "חינוך: בחירת מסגרת חינוכית" steps: [תוכן הבלוק] - name: "חינוך: בחירת זרם חינוכי של המסגרת" [ תוכן הבלוק] - name: "חינוך: בירור הרקע לאפליה" [ תוכן הבלוק] - name: "משטרה: בחירת סוג התלונה" [ תוכן הבלוק] - name: "מאבטח/ת: בחירת סוג התלונה" [ תוכן הבלוק] - name: "דיור: בחירת סוג התלונה" [ תוכן הבלוק] - name: "אחר: בירור פרטי הגורם הפוגע" [ תוכן הבלוק]
תחת ההגדרה snippets, מוצגים כל חלקי השיחה המתוכננים, אלו שנפנה אליהם באופן ישיר או עקיף מהרכיב “default”.
לכל אחד מהרכיבים או החלקים בשיחה, חשוב להגדיר שני חלקים:
המעבר בין חלקי שיחה מתבצע באמצעות הפקודה [שם חלק השיחה]: goto
- goto: "פרטי התקשרות: בחירת אמצעי יצירת קשר"
הצגת הודעה למשתמש/ת (say)
בתוך כל אחד מחלקי השיחה (snippets) ניתן להריץ פקודות ולבצע פעולות שונות. הפעולה הבסיסית ביותר היא הצגת הודעה או מסר למשתמש/ת. כדי לשלב אותה בתוך מבנה השיחה בצורה נכונה, חשוב להקפיד ליצור את הרווחים שימחישו שהיא אמורה לרוץ כפעולה בסדר הפעולות בתוך הרכיב המבקש.
כך, למשל, זה נראה בקובץ תסריט השימוש של הפנייה הראשונית במערכת – שימו לב לרווחים בתחילת השורות:
- description: תסריט לניהול שיחות מצד הפונה name: פונה snippets: - name: default steps: - say: שלום, הגעת למוקד סיוע לנפגעי גזענות ואפליה.
וכך זה יראה למשתמש/ת במערכת:
על מנת לגרום למעבר שורה בגוף ההודעה המוצגת יש לכתוב
המתנה לתשובת המשתמש/ת (wait)
הפקודה wait מסמנת למערכת לעצור את השיחה ולחכות לתגובת המשתמש.
במערכת מוגדרים כיום שני סוגי שאלות:
שאלות פתוחות הן שאלות שבהן המשתמש/ת מתבקש/ת להקליד את התשובה.
ההגדרה הבסיסית של שאלות כאלה כוללת שלושה חלקים:
הנה דוגמה לשאלה פתוחה מתסריט השימוש הקיים:
- say: מה השם שלך? אם את/ה רוצ/ה להישאר אנונימי/ת בשלב זה כתבו "אנונימי" - wait: variable: full_name
וכך זה יראה למשתמש/ת:
- say: מה השם שלך? אם את/ה רוצ/ה להישאר אנונימי/ת בשלב זה כתבו "אנונימי" - wait: variable: full_name
וכך זה יראה למשתמש/ת:
- say: מה מספר הטלפון שלך? - wait: variable: phone placeholder: 05x-xxx-yyyy validation: "[-.0-9()/+]{9,16}"
שאלת בחירה היא שאלה בה מוצגות למשתמש/ת מספר אפשרויות, מתוכן ניתנת האפשרות לבחור תשובה אחת.
עבור כל שאלת בחירה יש להגדיר:
הנה דוגמה לשאלת בחירה מתוך תסריט השיחה של הפניה הראשונית:
- say: האם תרצה/תרצי שננסה ליצור איתך קשר באמצעי קשר נוספים? - wait: variable: more_contact options: - show: כן value: yes steps: - goto: "פרטי התקשרות: בחירת אמצעי יצירת קשר" - show: לא value: no steps: []
ביצוע פעולות לפי תנאי (switch)
ישנם מקרים בהם אנחנו רוצים להתאים את תסריט השימוש לתשובה קודמת שניתנה לנו על ידי המשתמש/ת או לפרטי המקרה. אם ישנו משתנה (variable) שיכול לסייע בקבלת ההחלטה, ניתן להיעזר בפקודה switch לצורך הביצוע.
למשל, יתכן שבתחילת השיחה שאלנו את הפונה האם הוא גבר או אישה, ושמרנו את התשובה במשתנה בשם sex:
- say: מהו מינך? - wait: variable: sex options: - show: גבר value: male - show: אישה value: female
נניח שנרצה להציג לפונה הודעה שתואמת למין של הפונה: כלומר, נוסח שמותאם למשתמש (זכר) או למשתמשת (נקבה), בהתאם לתשובה שהשיבו.
חשוב: בעזרת הפקודה wait + options שהכרנו מוקדם יותר, ניתן גם כן להגדיר שאלה עוקבת, שתותאם למין הפונה. אפשרות זו רלוונטית רק כשפיצול או התאמת תסריט השימוש מתרחשת בצמוד לשאלת הבחירה. פקודת ה-Switch, לעומת זאת, מאפשרת ליצור פיצול בתסריט או השימוש, או התאמה שלו, לפי כל ערך משתנה זמין, בכל שלב של השיחה.
הפקודה switch מאפשרת לנו, בעזרת הערך ששמור במשתנה sex כדי לנסח את השאלה המשך, או משפט סיום מותאם למין הפונה:
- switch: arg: sex cases: - match: male steps: - say: היה נחמד לפגוש אותך, אולי תתקשר גם מחר? - match: female steps: - say: היה נחמד לפגוש אותך, אולי תתקשרי גם מחר?
ביצוע פונקציות
ישנם מצבים שדורשים בדיקות או פעולות מתוחכות, שלא ניתן לייצג בתסריט שימוש רגיל.
במקרים כאלו ניעזר במפתח/ת שיכתבו פונקציה, ונבקש מהם לשלב אותה במסגרת תסריט השיחה.
שילוב פונקציות בתסריט השימוש נעשה בעזרת הפקודה do. לפקודה זו שלושה רכיבים:
לדוגמה, הפונקציה הבאה בודקת האם השעה בה מתקיימת השיחה הראשונית היא ביום ושעה שמוגדרים כשעות עבודה, זאת, כדי להציג בהמשך השיחה הודעה מותאמת למועד, בנוגע להמשך הטיפול
- do: cmd: isWorkingTime variable: _is_working_time
צד המוקדנ/ית: כרטיסי מידע
כרטיסיות המידע הן אחד מכלי העזר שעומדים לרשותנו בהנחיית המוקדנ/ית בשיחות ההמשך וביצוע המשימות.
הצגת כרטיסיית המידע למוקדנ/ית, אפשרית בכל שלב בתסריט השימוש, בעזרת השימוש בפונקציה showInfoCard. הפונקציה המיוחדת הזו מקבל פרמטר יחיד תחת params. הפרמטר הזה הוא השם או הכינוי (slug) של הכרטיסייה להצגה.
כך, למשל מוצגת למוקדנ/ית כרטיסיית המידע עם מידע רלוונטי במסגרת טיפול בתלונה על מקרה של גזענות במערכת הבריאות:
- do: cmd: showInfoCard params: - health_ministry_contacts
כל כרטיסיות המידע מורכזות בקובץ src/atasets/infocards.datapackage.tx.json. זהו הפריט עם המידע שיוצג למוקדנ/ית:
{ "slug": "health_ministry_contacts", "title": { ".tx": { "_": "עמוד פניות ותלונות באתר משרד הבריאות", } }, "content": { ".tx": { "_": "[קישור](https://www.health.gov.il/PniyotHazibur/Pages/Complaints.aspx)", } }
מהדוגמה הזו ניתן ללמוד גם על המבנה שיאפשר למתכנת/ת שלכם להוסיף כרטיסיות מידע נוספות, או לערוך את המידע הקיים. בכל כרטיסיה מוגדרים שלושה חלקים:
סוג מיוחד של כרטיסיות מידע הוא מידע על ארגונים, שיכולים להיות רלוונטים בסיוע למוקדנ/ית או לפונה בהמשך הטיפול במקרה. פרטי הארגונים שמורים בקובץ src/datasets/organizations.datapackage.tx.json. דוגמה לרשומת ארגון:
{ "slug": "acri", "contactPerson1": null, "contactPerson2": null, "description": "האגודה פועלת למען החברה בישראל וכחלק ממנה, כדי להגן ולקדם את הזכויות של כולן וכולם, ללא קשר ותנאי למעמדם בישראל: אזרחים, תושבים, פליטים ומבקשי מקלט, מהגרי עבודה, תושבי ירושלים המזרחית ותושבי השטחים הכבושים; נשים וגברים, דתיים וחילונים, יהודים ופלסטינים, בעלי דעות פוליטיות מהימין ומן השמאל.\n\nצוות פניות הציבור מטפל בתלונות על פגיעה בזכויות אדם על ידי המדינה ורשויותיה או מי שפועל בשם הרשויות (ובמקרים של אפליה ופרנסה, גם על ידי גורמים פרטיים). הארגון מקבל פניות מכל אדם, ללא קשר למעמדו/ה בישראל", "email1": "[email protected]", "email2": null, "fax": null, "mailAddress": "האגודה לזכויות האזרח, רח' נחלת בנימין 75 תל-אביב 6515417. ", "organizationName": "אגודה לזכויות האזרח", "organizationType": "ארגון חברה אזרחית", "phoneNumber1": "03-5608185", "phoneNumber2": "073-7050752", "phoneResponseDetails": "כל יום בשעות 10:30-17:00. בשעות שבהן אין מענה אפשר להשאיר הודעה ברורה במשיבון ואנו נחזור אליכם.", "receptionDetails": null, "websiteLabel1": "אתר הארגון", "websiteLabel2": "פרטי יצירת קשר וטופס מקוון", "websiteUrl1": "https://www.acri.org.il/", "websiteUrl2": "https://www.acri.org.il/contact-us" }
וכך יוצג המידע למוקדנ/ית, תוך כדי השיחה ולצד המשימות הרלוונטיות:
צד המוקדנ/ית: תבניות משימה
כרטיסיות המשימה הן אחד מכלי העזר שעומדים לרשותנו בטיפול בפניה. תסריטי השימוש מאפשרים לנו להציף כרטיסיות משימה לביצוע תוך כדי שיחת ההמשך בין נציג/ת הארגון לפונה ולעקוב אחר ביצוען בהמשך תהליך הטיפול בפנייה.
הצגת כרטיסיית המשימה למוקדנ/ית, אפשרית בכל שלב בתסריט השימוש, בעזרת השימוש בפונקציה showInfoCard. הפונקציה המיוחדת הזו מקבל פרמטר יחיד תחת params. הפרמטר הזה הוא השם או הכינוי (slug) של הכרטיסייה להצגה.
כך, למשל, בתסריט השימוש למוקדנ/ית, אם הפונה מאשר/ת לנציג/ת הארגון להעביר את פרטי המידע ליחידה למאבק בגזענות במשרד המשפטים – הפקודה הבאה תוסיף כרטיסיית המשימה לשיתוף פרטי המקרה:
- do: cmd: addTask params: - record - share_full_details_with_justice_ministry
"slug": "share_full_details_with_justice_ministry", "title": "שיתוף פרטי המקרה עם היחידה לתיאום המאבק בגזענות במשרד המשפטים" "description": "יש לשלוח את פרטי המקרה במלואם ליחידה לתיאום המאבק בגזענות במשרד המשפטים ולוודא את קבלת החומר.\n\nשלח/י את פרטי המקרה ליחידה לתיאום המאבק בגזענות במשרד המשפטים.\nהפונה אישר/ה העברת הפרטים במלואם.\n \nיש לשלוח את פרטי המקרה במלואם ליחידה לתיאום המאבק בגזענות במשרד המשפטים ולוודא את קבלת החומר.\n \n יש לתעד בכרטיס המשימה את התקשורת עם הארגון ואת העדכונים שעברו אל הפונה ושהגיעו מהפונה. ניתן לסמן משימה זו כהושלמה רק לאחר שהושלמה התקשורת עם הארגון בנוגע לפניה זו.", "infocardSlugs": "justice_ministry_anti_racism_unit", },
המערכת מואמת לעבודה בסביבה מרובת שפות. כל חלקי המערכת ניתנים לתרגום לכל שפה מוכרת. ניתן לתרגם את כולם, או חלקים, לפי הצורך. התרגום מתבסס על שימוש באתר Transifex, בעל ממשק נח וקל לתפעול:
מערכת התרגום מאפשר שילוב מספר אנשי צוות כמתרגמים ו/או תהליך מסודר של תרגום והגהה ותיקונים. השימוש במערכת דורש פעולה פשוטה של מתן הרשאות וגישה למשאבי המערכת.
לאחר השלמת תהליך התרגום, נדרש/ת המפתח להריץ תהליך ממוכן וכעבור מספר דקות תוצג השפה החדשה, בכתובת הקבועה וקיצור שם השפה לאחריה, לדוגמה
equality.org.il/he או equality.org.il/ar או equality.org.il/en.
המערכת בגרסתה הראשונה מותאמת לשפות העברית והערבית, ולא נערכו התאמות עיצוביות לשפות משמאל-לימין (Left to Right). תיקונים אלו יהיו פשוטים ומהירים לביצוע, בגרסאות עתידיות.