Здравствуйте, вот все продолжаю мучать VK API в Delphi. На этой раз «перст пал» на расширенные методы API. К данным методам относятся

  • работа с личными сообщениями
  • работа со стеной пользователя
  • работа с фотографиями и альбомами фотографий

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

  • messages.get

Данный методу имеет следующие параметры

  • api_id — идентификатор приложения
  • sig — подпись безопасности
  • v — версия API(тут и возникли проблемы, расскажу ниже)
  • out — если равен 1, то вернет исходящие сообщения
  • offset — смещение, необходимое для выборки определенного подмножество сообщений
  • count — кол-во сообщений, которое необходимо получить (не больше 100)
  • filters — фильтр, получаем сообщений (1 — только не прочитанные, 2 — не из чата, 4 — сообщения от друзей)
  • preview_length — кол-во символов по которому необходимо обрезать сообщение
  • time_offset — максимальное время, прошедшее с момента отправки сообщений до текущего в секундах
  • format — XML или JSON
  • test_mode — если этот параметр равен 1, то разрешает тестовые запросы к данным приложения.Данный параметр позволяет тестировать приложение без загрузки его на сайт.

Первые 3 параметра являются обязательными как получить подпись безопасности я рассказывал, также хочу сказать, что для того, чтобы получать сообщения из вашего аккаунта необходимо, чтобы для данного приложения стояли права с битовой маской не менее 4096. Другими словами в настройках доступа данного приложения должна стоять галочка работы с Личными сообщениями. Вот что я хотел сказать про v (версию API). На сайте ВК по данному методу написано, что версия API для данного метода должна быть 2.0, я не понял почему, мне все время выдавало ошибку, что типа метод такой не существует, далее я поставил версию 3.0 все заработало, не понимаю почему ВК для таких расширенных методов не предоставила нормальную информацию.

Я создал новую вкладку на TPageControl в программе и поместил туда TListBox - 2 шт и TButton. В первом TListBox будет сообщение, а во втором идентификатор того, кто отправил и мы сможем посмотреть его профиль. На событие OnClick TButton я написал следующий код

procedure TForm1.Button11Click(Sender: TObject);
var
 PostVK:TStringList;
 sig:string;
 i:integer;
begin
   try
    i:=1;
    ListBox3.Clear;
    ListBox4.Clear;
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmethod=messages.getv=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Add('api_id=1918788');
    PostVK.Add('method=messages.get');
    PostVK.Add('format=XML');
    PostVK.Add('v=3.0');
    PostVK.Add('sig='+sig);
    PostVK.Add('sid='+Pchar(LabelSid.Caption));
    logVK:=IdHTTP1.Post('http://api.vkontakte.ru/api.php',PostVK);
    while (i<=length(logVK)) do
     begin
      if (pos('<body>',logVK)<>0) then
       begin
        ListBox3.Items.Add(Utf8ToAnsi(Pars(logVK,'<body','</body>',0)));
        ListBox4.Items.Add(Utf8ToAnsi(Pars(logVK,'<uid','</uid>',0)));
        Delete(logVK,1,pos('</uid>',logVK));
        i:=0;
       end;
      inc(i);
     end;
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;

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

Кстати хочу сказать, что сейчас услуги через смс довольно распространены в сети Интернет. Поэтому, если у Вас есть свой проект, свой бизнес в сети Интернет, то Вы очень быстро и просто, сможете прикрутить смс-биллинг. Сделайте Вашим клиентам удобство по оплате услуг и товаров.

Полный исходник проекта VK API в Delphi можете скачать тут

Автор статьи - Andrey53

Метки: , , , ,




К записи “Проект VK API в Delphi. Получение списка сообщений” оставлено комментариев: 11.

  1. YYYezi:

    тут грузятся все сообщения…как грузить только не прочитанные?

  2. YYYezi:

    а то у меня при запросе сообщений программа вешается,по ходу из за того что у меня тыщи сообщений!Хотя все прочитаны

  3. YYYezi:

    я принимаю по 10 сообщений,теперь программа не виснет..но в сообщениях кракозябры!как исправить?

  4. YYYezi:

    ну у меня стоит delphi 2010 ,а вот как поглядеть версию indY не знаю…

  5. YYYezi:

    а как использовать?

  6. YYYezi:

    с кодировкой разобрался!нужно убрать AnsiToUTF8

    должно получится так

    ListBox1.Items.Add((Pars(logVK,'<body','’,0)));
    ListBox2.Items.Add((Pars(logVK,'<uid','’,0)));

  7. YYYezi:

    а как превратить ИД в имя и фамилия???а то получается не понятно по иду смотреть от кого пришло!

    • Andrey53:

      посмотрите, возможно функция API есть такая, а может можно и ники парсить вместо id, результат весь выведие и посмотрите, если не получиться, то скажите, попробую найти проблему

  8. Stertor:

    Автор, Вы полный кретин и недоумок! Зачем выставлять свой код, полный ошибок на обозрение, чтобы другие повторяли ошибки?

    Зачем Вы обращаетесь из потока к форме? Справка для кого?

Оставить комментарий

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*