אירוח ופיתוח האתר נתרמו באדיבות...
- לינווייט - תשתיות תוכן וקהילה
- אמנון לבב - לבבי מדריכים
לפעמים רצוי לקבל הודעות מיידיות על דברים שקורים באתר. למשל, מילוי טופס מלקוח פוטנציאלי.
ניתן לממש משלוח SMS בצורה פשוטה יחסית.
(הכל מתייחס לדרופל 6).
קודם כל יש להתקין את המודול smsframework (עדיין אין גרסה רשמית לדרופל 6, אבל בקרוב תהיה. בינתיים אפשר למצוא patch ב issue queue למי שרוצה, כמו שאני עשיתי).
כעת צריך לבחור gateway שמטפל במשלוח של ההודעה. אני בחרתי ב clickatell, מהסיבה הפשוטה שזה המודול שעבר הסבה לדרופל 6, ובגלל שלא היתה לי סיבה למה לא להשתמש בהם.
ההרשמה אליהם היא החלק המסובך, אבל אני לא מתכוון להתעכב על זה - בתיעוד של smsframework מוסבר איך לעשות ואיך לקנפג.
כעת יש ליצור את הטופס שלנו, באמצעות webform, ואז, תחת additional processing, לכתוב:
<?php
module_invoke('sms', 'send', '9725XXXXXXXX', 'you have a new message');
?>וזהו!
תהנו.
תגובות
אחלה פוסט@
אין ספק שזה מודול שימושי ביותר,
עברית!
ואם ברצונכם לשלוח הודעות בעברית, אז תוכלו להשתמש (ולהצביע) בפץ' הבא:
http://drupal.org/node/292263
חלק מהמודול
זהו, הפץ' נכנס, וכעת המודול תומך בהודעות בעברית!
SMS + Drupal
אולי זה גם יעניין אותכם:
http://www.developmentseed.org/blog/2008/aug/06/setting-two-way-sms-gate...
דרך נוספת
דרך נוספת למשלוח SMS בישראל היא באמצעות שימוש בשירותים של חברה בשם אופיסקור. הרעיון פשוט - אופיסקור מקבלת מייל בפורמט מסויים ומוציאה SMS לנמען המבוקש.
באופן זה אין צורך בהתקנה של מודול ייעודי.
בהינתן event מסוים, באמצעות actions וworkflow, יש לשלוח מייל בפורמט מסויים (כתובת של אופיסקור ונושא שהוא המפתח המזהה אותך) לאופיסקור והם שולחים עבורך את הsms. כמובן שיש צורך בחשבון באופיסקור (מודל תימחורי – pre-paid).
אנחנו מימשנו את המנגנון הזה באחת מאפליקציות הדרופל שבנינו וזה עובד מצוין. במידה ויש צורך בפרטים נוספים udi@dofinity.com
טוב לדעת!
הבעיה היא שאין דרך לדעת מה קרה עם ההודעה ואם הבקשה התקבלה. מבחינתי, משלוח הודעות ב MAIL בין אפליקציות היא אופציה אחרונה.
אופטימום
באופן כללי אתה צודק.
ספציפית לנושא זה שווה לשקול את הנקודות הבאות:
א. קריטיות ההודעה
ב. פשטות המימוש
ג. הסיכוי לכישלון
כיוון שקריטיות ההודעות במקרה של הלקוח שלנו היתה נמוכה, המימוש במייל היה מאוד פשוט (ביחס לעבודה עם clickatell) ואחוז הSMSים שנכשלים הוא אפסי החלטנו ללכת על אופצית המייל. מומלץ במקרים דומים.
נכון
האם יש לכם אפשרות לעטוף את זה בצורת מודול ולשחרר לקהילה? הוא יכול להתחבר ל smsframework, ואז אופיסקור פשוט מצטרפים לרשימת הספקים האפשריים. לנו זה כדאי כי תהיה לנו אופציה (שוב, אני השתמשתי בקליקאטל מתוך עצלנות, לא כי היתה לי בחירה).
זה לא כ"כ מסובך לכתוב מודול כזה, במיוחד אם יש לכם את הקוד הזה עובד!
קונפיגורציה++
פשוט... אין צורך במודול...
במידה ומספר הטלפון של הנמען קבוע - אין צורך בקוד!
בהנחה שמודול הactions מותקן כל שעליך לעשות הוא להגדיר action חדש, מסוג מייל, שנקרא SMS (לדוגמא). אופן הקונפיגורציה של הפרמטרים הרלוונטיים:
1. בשדה הrecipient יש להכניס את הכתובת בפורמט הבא:
<phone_number>@smscenter.co.il
2. בשדה הsubject יש להכניס את הקוד המזהה של אופיסקור
במידה ומספר הטלפון משתנה פר הודעה, אזי יש לממש בקוד את הלוגיקה המסויימת (לאתר) לפיה יש לשלוף את מספר הטלפון ולבנות את הכתובת למשלוח (כך אנו עשינו אך זה רלוונטי רק לאפליקציה הספציפית שלנו)
מקווה שהצלחתי לעזור.
פגז!
בלי מודול זה יותר טוב. כל הכבוד.
איך בדיוק?
הכוונה היא לשימוש ב Tokens או בסוג של מודול?
בעניין: איך בדיוק?
אני מעריך שהכוונה לשימוש בקוד PHP כחלק מהטופס (webform מאפשר זאת)
יצירת action חדש
מודול הactions מאפשר יצירה של action חדש. נניח שייצרת מודול חדש בשם mymodule אזי תוכל להוסיף action חדש על ידי הוספת הפונקציה: action_mymodule_send_sms
כבסיס לפונקצייה החדשה הנ"ל, ניתן להעתיק את action_send_email הכתובה בקובץ actions.inc במודול הactions. הפעולה החדשה (send sms) תופיע ברשימת הפעולות הניתנות לקונפיגורציה וניתן יהיה להגדיר הודעות sms שונות לevents שונים.
בנוגע ללוגיקת הנמען - בתוך הפונקציה הנ"ל יש שורה שבה מוגדר פרמטר ה-recipient$. במקרה של האפליקציה שלנו לכל user מוגדר בprofile שלו מספר טלפון למשלוח הsms ובמידה והוא יוצר הזמנה במערכת, הוא מקבל smsים לטלפון הזה (כלומר כדי למלא את שדה ה-recipient בדקנו מי יצר את הnode ושלפנו את מספר הטלפון מהפרופיל של user זה).
במידה ויש צורך בעזרה נוספת אשמח לשלוח את הקוד עצמו (udi@dofinity.com)
אודי.