Deeepi
@Deeepi

Прием данных от Viber и запись в БД?

Всем привет.
Делаю Viber бота на php и столкнулся с проблемой.
Хочу чтобы как пользователь написал сообщение, полученный ответ от Viber записывался в БД.
Делаю так:
$output = json_decode(file_get_contents('php://input'), true);
$sqlViber = $pdo->prepare(' SELECT * FROM viber WHERE us_id=:us_id ');
$sqlViber->execute(array(
    ':us_id' => $output['sender']['id']
));
if ($sqlViber->rowCount()==0) {
    $sqlAddUser = $pdo->prepare('INSERT INTO viber (us_id,info,create_us) VALUES (:us_id,:info,:create_us)');
    $sqlAddUser->execute(array(
        ':us_id' => $output['sender']['id'],
        ':info' => serialize(array(
            'name' => $output['sender']['name'],
            'avatar' => $output['sender']['avatar']
        )),
        ':create_us' => time()
    ));
}

Запись не происходит. Решил попробовать записать ответ в txt. Делаю так:
$output = json_decode(file_get_contents('php://input'), true);
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/0/'.uniqid(time().'_').'.txt', file_get_contents('php://input'));

Создается три файла.
1 файл:
Array
(
    [event] => message
    [timestamp] => 15178994*****
    [message_token] => 51415526242759*****
    [sender] => Array
        (
            [id] => XnDifpu********oCc6lpg==
            [name] => My name
            [avatar] => My avatar
            [language] => ru
            [country] => RU
            [api_version] => 2
        )

    [message] => Array
        (
            [text] => 5
            [type] => text
            [media] => 
            [thumbnail] => 
            [tracking_data] => tracking data
        )

    [silent] => 
)

2 файл:
Array
(
    [event] => delivered
    [timestamp] => 1517****49597
    [message_token] => 5141****29706804015
    [user_id] => XnDifpu********oCc6lpg==
)

3 файл:
Array
(
    [event] => seen
    [timestamp] => 1517******500
    [message_token] => 514******9706804015
    [user_id] => XnDifpu********oCc6lpg==
)

В чем ошибка. Почему в БД не записывается, а в файл норм?
  • Вопрос задан
  • 928 просмотров
Решения вопроса 1
Обработайте ошибки и увидите где проблема php.net/manual/ru/pdo.error-handling.php
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AleksMo
@AleksMo
//Делай так, у меня работает ....

# массив с данными пользователя ...
$json = file_get_contents('php://input');
$viber = json_decode($json);
//$sender=$viber->sender->id;//ID Для отправки сообщения

$sender = $viber->{'sender'}; // sender - это массив с данными пользователя
$name_user=$sender->name;//Имя
$avatar = $sender->avatar; //Картинка
$receiverID = $sender->id; // ID

# Сообщение от пользователя
$message=$viber->message->text;

if ($receiverID!= "") //Если ID не пустое то производим сохранение пользователя в БД

{
# Записываем в базу данные о пользователе который подписался ....
# Подключение к БД
include 'config.php';
$db = mysql_connect($servername, $username, $password);
if (!$db) {die('Ошибка соединения: ' . mysql_error());}
mysql_select_db($dbname, $db);
/*Делаем запрос к БД*/
$result = mysql_query ("INSERT IGNORE INTO viber (receiver,name, avatar) VALUES ('$receiverID','$name_user', '$avatar')");
mysql_close($db);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы