Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F99648546
PhabricatorSMSImplementationAdapter.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Jan 25, 23:39
Size
2 KB
Mime Type
text/x-php
Expires
Mon, Jan 27, 23:39 (2 d)
Engine
blob
Format
Raw Data
Handle
23837723
Attached To
rPH Phabricator
PhabricatorSMSImplementationAdapter.php
View Options
<?php
abstract
class
PhabricatorSMSImplementationAdapter
{
private
$fromNumber
;
private
$toNumber
;
private
$body
;
public
function
setFrom
(
$number
)
{
$this
->
fromNumber
=
$number
;
return
$this
;
}
public
function
getFrom
()
{
return
$this
->
fromNumber
;
}
public
function
setTo
(
$number
)
{
$this
->
toNumber
=
$number
;
return
$this
;
}
public
function
getTo
()
{
return
$this
->
toNumber
;
}
public
function
setBody
(
$body
)
{
$this
->
body
=
$body
;
return
$this
;
}
public
function
getBody
()
{
return
$this
->
body
;
}
/**
* 16 characters or less, to be used in database columns and exposed
* to administrators during configuration directly.
*/
abstract
public
function
getProviderShortName
();
/**
* Send the message. Generally, this means connecting to some service and
* handing data to it. SMS APIs are generally asynchronous, so truly
* determining success or failure is probably impossible synchronously.
*
* That said, if the adapter determines that the SMS will never be
* deliverable, or there is some other known failure, it should throw
* an exception.
*
* @return null
*/
abstract
public
function
send
();
/**
* Most (all?) SMS APIs are asynchronous, but some do send back some
* initial information. Use this hook to determine what the updated
* sentStatus should be and what the provider is using for an SMS ID,
* as well as throw exceptions if there are any failures.
*
* @return array Tuple of ($sms_id and $sent_status)
*/
abstract
public
function
getSMSDataFromResult
(
$result
);
/**
* Due to the asynchronous nature of sending SMS messages, it can be
* necessary to poll the provider regarding the sent status of a given
* sms.
*
* For now, this *MUST* be implemented and *MUST* work.
*/
abstract
public
function
pollSMSSentStatus
(
PhabricatorSMS
$sms
);
/**
* Convenience function to handle sending an SMS.
*/
public
static
function
sendSMS
(
array
$to_numbers
,
$body
)
{
PhabricatorWorker
::
scheduleTask
(
'PhabricatorSMSDemultiplexWorker'
,
array
(
'toNumbers'
=>
$to_numbers
,
'body'
=>
$body
));
}
}
Event Timeline
Log In to Comment