Php сообщения как Вконтакте

Реализовал на сайте возможность отправки личных сообщений и хочу сделать, чтоб сообщения выводились как, например, Вконтакте. То есть как мне вывести сообщения виде чата, только я и получатель!

Отслеживать
371 1 1 золотой знак 5 5 серебряных знаков 13 13 бронзовых знаков
задан 18 сен 2012 в 16:12
Kirpich643 Kirpich643
505 4 4 золотых знака 16 16 серебряных знаков 38 38 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Все гениальное — просто:
первое, что понадобится — общее хранилище сообщений. У каждого сообщения свой уникальный идентификатор (в лоб — авто инкремент).

id msg_title msg_body other .

и собственно сама история переписки:

id user1 user2 msg_id

Сама переписка контролируется примерно так:
при отправке сообщения оно записывается в хранилище тут мы получаем id этого сообщения. потом записываем это сообщение сразу 2м юзерам: т.е

id отправитель получатель msg_id id получатель отправитель msg_id

и получаем историю переписки

Работа с API Вконтакте с помощью PHP. Отправка сообщений с медиа-вложением

where user_1=current_user and user_2=с_кем_мы_переписываемся

P.S: сразу оговорюсь для Hi-load от SQL баз придется отказаться.

Источник: ru.stackoverflow.com

H Сообщения с сайта в ВК – просто и эффективно – PHP+CUrl в черновиках Из песочницы

Доставка сообщений в ВК удобна большинству сайтов разной направленности: емайлы многие не читают, в таких мессенджерах как Вотсап и Вайбер все сложно. А рассылка новостей и личных уведомлений с сайта в ВК – самое то – легко, просто и сразу видно пользователю.

Для своего сервиса Глиса мне необходимо быстро и бесплатно доставлять уведомления о новых объявлениях пользователям. Базовый канал – емайл – не удобен. Другой хороший канал – мессенджер Телеграмм – решил побороться за приватность и стал не надежен. Поэтому пришлось добавить альтернативу в виде ВК (тем более что сервис умеет еще отслеживать группы в ВК на появление новых записей и комментариев). Был приятно удивлен простотой и продуманностью настройки, даже Телеграмм рядом не стоял.

Еще по теме:  Как добавить видео в ВК с компьютера

1. Подключаем виджет «Разрешить писать сообществу»
Виджет выглядит в виде кнопки. Я встроил кнопку в настройки аккаунта пользователя Глисы.

image

В тексте нужно заменить 74449217 на id своей группы. Также продумать куда будет сохраняться полученный userId ВКонтакте. В приведенном ниже коде он присваивается полю vk_id, а потом сохраняется вместе с другими настройками.

VK.Widgets.AllowMessagesFromCommunity(‘vk_send_message’, ,74449217); VK.Observer.subscribe(‘widgets.allowMessagesFromCommunity.allowed’, function f(userId) < console.log(userId); console.log(‘allowed’); document.getElementById(‘vk_id’).value=userId; >); VK.Observer.subscribe(‘widgets.allowMessagesFromCommunity.denied’, function f(userId) < console.log(userId); console.log(‘denied’); document.getElementById(‘vk_id’).value=»; >);

Документация по виджету: https://vk.com/dev/widget_allow_messages_from_community

Уроки PHP / VK API читаем сообщения из группы ВКонтакте


Разрешение от пользователя у нас получено, теперь организуем отправку сообщений.

2. Отправка сообщений
В настройках своего сообщества включаем сообщения сообщества.

image

Генерируем токен своего сообщества.

image

В общем все готово. Для отправки сообщения используем PHP+CUrl. В функцию отправки в качестве входных параметров передаем ранее полученный id пользователя ВК и текст сообщения. Также функция использует константы vk_token – токен сообщества.

//отправка сообщения в vk function send_vk($vk_id, $text_source) < $text=rawurlencode($text_source); $ch = curl_init($url); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); $url=»https://api.vk.com/method/messages.send?user_id=$vk_idaccess_token=».vk_token; curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_POSTFIELDS, «.$text); $hh=curl_exec($ch); //если отправка не удалась if (!strpos(» «.$hh,'<«response»:’)) < //если нет сообщения об ошибке, отправляем повторно if (!strpos(» «.$hh,’error’)) <$hh=curl_exec($ch);>> $html=$hh; curl_close($ch); return $html; >

Вместе с изучением возможностей и материала я потратил на организацию отправки оповещений в ВК один день — считаю, что это один из самых простых вариантов коммуникации с пользователем.

Источник: sohabr.net

Php сообщения как вконтакте

В этой статье я расскажу про систему диалогов на php, которую я создал на одном из сервисов компании, где я работаю.

Изначально, хотелось получить систему, которая бы повторяла функционал диалоговой системы контакта. Требования были следующие: скрипт не должен требовать установки на сервер дополнительных средств (поддержка long-pool запросов, phpdemon, поддержки websocket и т.п), позволять создавать диалог неограниченного числа пользователей и работать на обычном ajax-post сообщении с сайтом.

Еще по теме:  Vk stream что это

Для начала создадим структуру БД

Когда один пользователь хочет написать сообщение другому, скрипт ищет подходящий диалог. Диалог, является подходящим, если в нем участвую те же лица. Т.е. если мы раньше писали этому человеку, и никого больше не подключали к этому диалогу, то он подходит. Если же подходящего диалога нет, то создаем новый. Диалог и пользователь связаны таблицей user_to_dialog.

Когда пользователь посылает сообщение, оно записывается в табличку message. А информация о том, кому оно предназначено лежит в табличке message_to_user. По сути, эта таблица избыточна, так как у нас уже есть информация кому показывать сообщение исходя из данных user_to_dialog. Но мне было так удобно. Можете это изменить в своем форке.

Перейдем к коду.

Структура класса dialog

// создание нового диалога public function find_suit_dialog($userlist = array())<> // поиск подходящего диалога function get_new_messages_cnt()<> // количество новых сообщений для пользователя function get_users_from_dialog()<> // список пользователей принадлежащих диалогу function get_user_dialogs( $start=0,$cnt = 10 )<> // вывод диалогов пользователя function get_messages_from_dialog($new=false,$reset_status = true)<> // вывод сообщений из диалога function remove_users_from_dialog( $userlist = array() )<> function add_users_to_dialog( $userlist = array() )<> // добавить пользователя в диалог function send($msg,$intro = false)<> // посылка сообщения в диалог function send_many_users( $msg,$userlist,$intro = false )<> // посылка сообщения нескольким пользователям public function delete_message( $messageid )<> // удаление сообщения >

поле user_id_field нужно для того, чтобы пристроить скрипт к Вашей бд, в которой возможно уже есть система пользователей.

Полная реализация всех методов

Создаем экземпляр класса dialog

где $db инициализированный и подключенный экземпляр класса db, а $userid это id текущего пользователя.

Получить все диалоги пользователя

$dialogs = $xddialog->get_user_dialogs(); $out = »; foreach($dialogs as $dg) $out.=’ ‘;

получить все сообщения из текущего дилога
$cnt = $xddialog->get_new_messages_cnt(); $messages = (!$cnt)?array():$xddialog->get_messages_from_dialog(); $out = »; foreach($messages as $msg) $out.=’ ‘.$msg[‘message’].’ ‘;

получить только новые сообщения
$cnt = $xddialog->get_new_messages_cnt(); $messages = (!$cnt)?array():$xddialog->get_messages_from_dialog(true);

Отправка сообщения в диалог
$xddialog->send($_POST[‘message’]);

Поиск подходящего диалога и добавление туда всех пользователей
$xddialog->find_suit_dialog(array($userid1,$userid2,$userid3,)); $xddialog->add_users_to_dialog(array($userid,$userid1,$userid2,$userid3,));

Еще по теме:  Как скачивать музыку в Телеграмм из Вконтакте

где $userid это id текущего пользователя, а $userid,$userid1,$userid2,$userid3, id пользователей с которыми будет вестись диалог

Источник: yadro.top

Рейтинг
( Пока оценок нет )
Загрузка ...