Details
-
Type: Sub-task
-
Status: Done/Fixed
-
Priority: Trivial
-
Resolution: Fixed/Completed
-
Affects Version/s: 4.2.0
-
Fix Version/s: 4.2.0
-
Component/s: None
-
Labels:None
Description
A delivery acknowledgment can be monitored via the callback URL.
Code flow:
--------------
The callback file could be: extern/sms.php - [input: carrier=clickatell for example]. This file would be the main handler for processing acknowledgments irrespective of provider.
The callback url could be sth like http://example.com/sites/all/modules/civicrm/extern/sms.php?provider=clickatell
The callback file based on input / provider could ask specific provider files to complete the processing, example - CRM/SMS/Provider/Clickatell.php (if provider=Clickatell)
A base file CRM/SMS/Provider.php parent of CRM/Core/SMS/{$Provider}.php would try to do most of processing by itself. Specific operations only be delegated to CRM/SMS/Provider/{$provider}.php based on the amount of functionality that differs from base class.
Action / post process
---------------------------
For now activity would be updated with status & appropriate message (in location field).
apiMsgId stored in result column of activity table (by $provider->send() action) would now be used to uniquely identify & update an activity record.
Hooks would allow creating custom tables and updating other params time, cost .. values.
Since $provider->send() does not set the status initially, any kind of status would be enough to indicate that there has been a callback, and status column would always reflect the current status at that point of time.