Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/metamta/adapter/PhabricatorMailTwilioAdapter.php
12256 views
1
<?php
2
3
final class PhabricatorMailTwilioAdapter
4
extends PhabricatorMailAdapter {
5
6
const ADAPTERTYPE = 'twilio';
7
8
public function getSupportedMessageTypes() {
9
return array(
10
PhabricatorMailSMSMessage::MESSAGETYPE,
11
);
12
}
13
14
protected function validateOptions(array $options) {
15
PhutilTypeSpec::checkMap(
16
$options,
17
array(
18
'account-sid' => 'string',
19
'auth-token' => 'string',
20
'from-number' => 'string',
21
));
22
23
// Construct an object from the "from-number" to validate it.
24
$number = new PhabricatorPhoneNumber($options['from-number']);
25
}
26
27
public function newDefaultOptions() {
28
return array(
29
'account-sid' => null,
30
'auth-token' => null,
31
'from-number' => null,
32
);
33
}
34
35
public function sendMessage(PhabricatorMailExternalMessage $message) {
36
$account_sid = $this->getOption('account-sid');
37
38
$auth_token = $this->getOption('auth-token');
39
$auth_token = new PhutilOpaqueEnvelope($auth_token);
40
41
$from_number = $this->getOption('from-number');
42
$from_number = new PhabricatorPhoneNumber($from_number);
43
44
$to_number = $message->getToNumber();
45
$text_body = $message->getTextBody();
46
47
$parameters = array(
48
'From' => $from_number->toE164(),
49
'To' => $to_number->toE164(),
50
'Body' => $text_body,
51
);
52
53
$result = id(new PhabricatorTwilioFuture())
54
->setAccountSID($account_sid)
55
->setAuthToken($auth_token)
56
->setMethod('Messages.json', $parameters)
57
->setTimeout(60)
58
->resolve();
59
}
60
61
}
62
63