Adding 2fa API

This commit is contained in:
Will Bradley 2016-01-20 15:14:58 -07:00
parent 2e8be09571
commit 320b6f9158
2 changed files with 72 additions and 0 deletions

View File

@ -45,6 +45,18 @@ class SmsManager
return SmsSendResponse::createFromResponse($response); return SmsSendResponse::createFromResponse($response);
} }
/**
* @param string $number
* @param string $pin
* @param int $client_ref
* @return SmsSendResponse
*/
public function send2fa($number,$pin,$client_ref=false) {
$number = PhoneNumber::prefixFilter($number);
$response = $this->nexmoClient->send2faMessage($number,$pin,$client_ref);
return SmsSendResponse::createFromResponse($response);
}
public function sendBinary() { public function sendBinary() {
throw new \Exception(__METHOD__.' not yet implemented'); throw new \Exception(__METHOD__.' not yet implemented');
} }

View File

@ -107,6 +107,66 @@ class NexmoClient {
return $this->jsonRequest('/account/get-pricing/outbound',array('country'=>$country)); return $this->jsonRequest('/account/get-pricing/outbound',array('country'=>$country));
} }
/**
* Sends a verifiation PIN using the Two-Factor Authentication API
*
* @param string $toNumber
* @param string $pin
* @param int $client_ref
* @return array
* @throws \Exception
*/
public function send2faMessage($toNumber,$pin,$client_ref=false) {
$this->logger->debug("Nexmo send2faMessage to $toNumber with PIN '$pin'");
// delivery phone for development
if($this->delivery_phone) {
$toNumber = $this->delivery_phone;
$this->logger->debug("Nexmo send2faMessage delivery to $toNumber");
}
$params = array(
'to'=>$toNumber,
'pin'=>$pin,
);
if($client_ref) {
$params['client_ref'] = $client_ref;
}
if($this->disable_delivery) {
$this->logger->debug("Nexmo send2faMessage delivery disabled by config");
return array(
"status" => "0",
"message-id" => "delivery-disabled",
"to" => $toNumber,
"client-ref" => 0,
"remaining-balance" => 0,
"message-price" => 0,
"network" => 0,
);
}
$response = $this->jsonRequest('sc/us/2fa/json',$params);
if(0 !== $code = (int)$response['messages'][0]['status']) {
$error = $response['messages'][0]['error-text'];
switch( $code) {
case 6:
throw new UnroutableSmsMessageException($error, $code);
case 9:
throw new QuotaExcededException($error, $code);
default:
throw new NexmoClientException($error, $code);
}
}
return $response['messages'][0];
}
/** /**
* @param string $fromName * @param string $fromName
* @param string $toNumber * @param string $toNumber