Отправка сообщения с сайта

Отправка сообщений с веб-сайта имеет много применений; отправка уведомлений пользователям является хорошим примером. В этом примере мы собираемся представить вам форму, в которой вы можете ввести номер телефона и сообщение и отправить его своему пользователю. Это может быть быстро адаптировано для других целей.

Подготовка

Полный исходный код этого рецепта можно найти в папке Chapter6 / Recipe1 / .

Как реализовать

Хорошо, давайте узнаем, как отправить SMS-сообщение с веб-сайта. Пользователю будет предложено заполнить форму, которая отправит SMS-сообщение на номер телефона, указанный в форме.

  1. Загрузите вспомогательную библиотеку Twilio со страницы https://github.com/twilio/twilio-php/zipball/master и распакуйте ее.
  2. Загрузите Services/ папку на ваш сайт.
  3. Загрузить config.php на ваш сайт и убедитесь, что установлены следующие переменные:
  4. Загрузите файл с именем sms.php и добавьте в него следующий код:
  5. Создайте файл с именем functions.php и добавьте в него следующий код:

Как это устроено

В шагах 1 и 2 мы загрузили и установили Twilio Helper Library для PHP. Эта библиотека — сердце ваших приложений на основе Twilio. На шаге 3 мы загрузили config.php,который содержит нашу информацию для аутентификации, чтобы поговорить с API Twilio.

В шагах 4 и 5 мы создали sms.php и functions.php , которые отправят сообщение на номер телефона, который мы вводим. Функция send_sms удобна для инициирования SMS-разговоров; мы будем активно использовать эту функцию в оставшейся части статьи.

Разрешение пользователям совершать звонки из журналов вызовов

Мы отобразим список входящих звонков и дадим им возможность перезвонить на эти номера.

Подготовка

Полный исходный код можно найти в папке Chapter9 / Recipe4 .

Как реализовать

Теперь давайте создадим раздел, в котором наши пользователи смогут выполнить следующие действия:

Обновите файл index.php со следующим содержимым:

option('source', 'config.ini');
#$pdo = Db::singleton();
$mysiteURL = $app->option('site.url');
$app->condition('signed_in', function () use ($app) {
$app->redirect( $app->getBaseUri().'/login',!$app->store('user'));
});
$app->get('/login', function() use ($app){
$app->render( 'login', array(),'layout' );
});
$app->post('/login', function() use ($app){
$sql = "SELECT * FROM `user` WHERE `email`='{$_POST['user']}'
AND `password`='{$_POST['pass']}'";
$pdo = Db::singleton();
$res = $pdo->query( $sql );
$user = $res->fetch();
if( isset($user['ID']) ){
$_SESSION['uid'] = $user['ID'];
$app->store('user',$user['ID']);
$app->redirect( $app->getBaseUri().'/home');
}else{
$app->redirect( $app->getBaseUri().'/login');
}
});
$app->get('/signup', function() use ($app){
$app->render( 'register', array(),'layout' );
});
$app->post('/signup', function() use ($app){
$client = new Services_Twilio($app->store('twilio.accountsid'),
$app->store('twilio.authtoken') );
extract($_POST);
$timestamp = strtotime( $timestamp );
$subaccount = $client->accounts->create(array(
"FriendlyName" => $email
));
$sid = $subaccount->sid;
$token = $subaccount->auth_token;
$sql = "INSERT INTO 'user' SET `name`='{$name}',`email`='{$email
}',`password`='{$password}',`phone_number`='{$phone_number}',`sid`
='{$sid}',`token`='{$token}',`status`=1";
$pdo = Db::singleton();
$pdo->exec($sql);
$uid = $pdo->lastInsertId();
$app->store('user',$uid );
// log user in
$app->redirect( $app->getBaseUri().'/phone-number');
});
$app->get('/phone-number', function() use ($app){
$app->condition('signed_in');
$user = $app->store('user');
$client = new Services_Twilio($user['sid'], $user['token']);
$app->render('phone-number');
});
$app->post("search", function() use ($app){
$app->condition('signed_in');
$user = get_user( $app->store('user') );
$client = new Services_Twilio($user['sid'], $user['token']);
$SearchParams = array();
$SearchParams['InPostalCode'] = !empty($_POST['postal_code']) ?
trim($_POST['postal_code']) : '';
$SearchParams['NearNumber'] = !empty($_POST['near_number']) ?
trim($_POST['near_number']) : '';
$SearchParams['Contains'] = !empty($_POST['contains'])? trim($_
POST['contains']) : '' ;
try {
$numbers = $client->account->available_phone_numbers->getList('US',
'Local', $SearchParams);
if(empty($numbers)) {
$err = urlencode("We didn't find any phone numbers by that
search");
$app->redirect( $app->getBaseUri().'/phone-number?msg='.$err);
exit(0);
}
} catch (Exception $e) {
$err = urlencode("Error processing search:
{$e->getMessage()}");
$app->redirect( $app->getBaseUri().'/phone-number?msg='.$err);
exit(0);
}
$app->render('search',array('numbers'=>$numbers));
});
$app->post("buy", function() use ($app){
$app->condition('signed_in');
$user = get_user( $app->store('user') );
$client = new Services_Twilio($user['sid'], $user['token']);
$PhoneNumber = $_POST['PhoneNumber'];
try {
$number = $client->account->incoming_phone_numbers->create(array(
'PhoneNumber' => $PhoneNumber
));
$phsid = $number->sid;
if ( !empty($phsid) ){
$sql = "INSERT INTO numbers (user_id,number,sid) VALUES('{$u
ser['ID']}','{$PhoneNumber}','{$phsid}');";
$pdo = Db::singleton();
$pdo->exec($sql);
$fid = $pdo->lastInsertId();
$ret = editNumber($phsid,array(
"FriendlyName"=>$PhoneNumber,
"VoiceUrl" => $mysiteURL."/voice?id=".$fid,
"VoiceMethod" => "POST",
),$user['sid'], $user['token']);
}
} catch (Exception $e) {
$err = urlencode("Error purchasing number:
{$e->getMessage()}");
$app->redirect( $app->getBaseUri().'/phone-number?msg='.$err);
exit(0);
}
$msg = urlencode("Thank you for purchasing $PhoneNumber");
header("Location: index.php?msg=$msg");
$app->redirect( $app->getBaseUri().'/home?msg='.$msg);
exit(0);
});
$app->route('/voice', function() use ($app){
});
$app->get('/transcribe', function() use ($app){
});
$app->get('/logout', function() use ($app){
$app->store('user',0);
$app->redirect( $app->getBaseUri().'/login');
});
$app->get('/home', function() use ($app){
$app->condition('signed_in');
$uid = $app->store('user');
$user = get_user( $uid );
$client = new Services_Twilio($user['sid'], $user['token']);
$app->render('dashboard',array(
'user'=>$user,
'client'=>$client
));
});
$app->get('/delete', function() use ($app){
$app->condition('signed_in');
});
$app->get('/', function() use ($app){
$app->render( 'home' );
});
$app->listen();

Загрузить файл с именем dashboard.php со следующим содержанием в просмотрахпапки:

Мой номер

Моя история звонков

Here are a list of recent calls, you can click any number to call them back, we will call your registered phone number and then the caller

Как это устроено

На шаге 1 мы обновили файл index.php .

На шаге 2 мы загрузили dashboard.php на просмотры папки. Этот файл проверяет, вошли ли мы в систему с помощью метода $ app-> condition (‘signature_in’) , который мы обсуждали ранее, и, если мы это сделаем, он отображает все входящие вызовы, которые мы имели на нашу учетную запись. Затем мы можем нажать кнопку, чтобы позвонить на один из этих номеров и внести их в белый или черный список.

Итог

Таким образом, в этой статье мы узнали, как отправлять сообщения и совершать телефонные звонки с вашего сайта с помощью Twilio.