Проект VK API в Delphi. Отправка сообщений

3 минуты на чтение

Здравствуйте, в этой новости хотел бы поговорить о том, как можно отправить сообщение из своего приложения другу. Тут были проблемы с кодировкой отправляемых сообщений, то есть если просто отправлять, то сообщения пользователю приходили иероглифами, но это проблема решаема. Дальше также хочу заметить, что в документации ВК по данному методу, также версия API была записана как 2.0, хотя на самому деле необходимо использовать 3.0, такие замечательные методы, а информация по ним какая-то устаревшая. Ну для отправки сообщений в ВК существует отличный метод

  • messages.send

Давайте пройдемся по параметрам данного метода

  • api_id — идентификатор приложения
  • sig - подпись безопасности
  • v - версия API (в документации ВК записана как 2.0, но необходимо 3.0)
  • uid - идентификатор пользователя, которому необходимо отправлять сообщение (по умолчанию текущий пользователь)
  • message - текст сообщения
  • title - заголовок сообщения
  • type - 0 — обычное сообщение, 1 — сообщение из чата
  • format - XML или JSON
  • test_mode - если равен 1, то разрешает тестовые запросы к данным приложения.

Первые 5 параметров являются обязательными. Все идет по стандарту, создаем нашу подпись безопасности, тут не забудьте создать ее в алфавитном порядке, иначе будете получать сообщение об ошибки, что подпись не верна. Я добавил на вкладку «Сообщение»

  • TEdit
  • TButton

Ну TEdit для того, чтобы Вы смогли  написать сообщение, которое необходимо отправить. Также сообщения отправляются id-пользователю тому, id, который записан в Edit1, который находится на вкладке «Профиль«, то есть Вы можете авторитизироваться получить список сообщений и в TListBox выбрать, тот id, которому Вы хотите отправить сообщение затем написать данное сообщение и нажать на кнопку «Отправить«, после этого сообщение будет доставлено успешно. На TButton события OnClick я написал следующий код

procedure TForm1.Button12Click(Sender: TObject);
var
 sig:string;
begin
   try
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmessage='+AnsiToUtf8(Edit4.Text)+'method=messages.senduid='+Edit1.Text+'v=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Clear;
    PostVK.Add('api_id=1918788');
    PostVK.Add('sig='+sig);
    PostVK.Add('v=3.0');
    PostVK.Add('method=messages.send');
    PostVK.Add('uid='+Edit1.Text);
    PostVK.Add('format=XML');
    PostVK.Add('message='+AnsiToUtf8(Edit4.Text));
    PostVK.Add('sid='+Pchar(LabelSid.Caption));
    logVK:=IdHTTP1.Post('https://api.vkontakte.ru/api.php',PostVK);
    if pos('error_code',logVK)=0 then
     ShowMessage('Message Send Ok')
    else
     ShowMessage('Not message send');
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;

Теперь поговорим о самой кодировки, помните я говорил, что русские символы приходят иероглифами, для того, чтобы решить данную проблему я использовал функцию преобразования типов AnsiToUtf8, которая мне и помогла избежать данной проблемы. С английскими символами проблем не наблюдалось. Ну что вроде бы все рассказал по данному методу, дальше рассмотрим как удалять сообщения.

Facebook Vk Ok Twitter LinkedIn Telegram

Похожие записи:

Ну вот наконец-то, мы добрались и до отправке sms-сообщений через sms-шлюз средствами Delphi. Теоретическую часть sms-шлюза мы знаем, а также знаем как отправлять email-сообщения средствами Delphi. Это нам все и пригодится в данной статье. Давайте вспомним, чт...
Здравствуйте, давненько я не писал про проект VK API в Delphi, на этот раз хочу продолжить серию статей про данный проект, тем более, что еще достаточно много не рассмотрено функций по работе с VK API. В последних статьях про VK API в Delphi мы рассмотрели фун...
В этой статье я хотел бы поговорить про sms-шлюз, а точнее как средставми Delphi отправить sms-сообщение через sms-шлюз вашего телефонного оператора. Скажу сразу, что к отправке сообщений, через sms-шлюз средствами Delphi мы будем подходить постепенно, то есть...