Как встроить telegram в android приложение?

115
10 ноября 2019, 06:10

Каким образом встроить чат-бота в Android приложение. Получать ответы от бота в виде json-массива и выводить? или пытаться интегрировать его?

Answer 1

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

  1. Апи куда вы посылаете запрос - если это определенный бот, а вероятнее всего определенный, то вам нужно получать именно от нужного бота ответы. Для этого у вас должно быть апи. Чаще всего апи представлено в виде кусочка или целого адреса.
  2. Класс-запрос (данные которые нужны для получения ответа от вашего бота) - это класс или кучка данных которые требуются серверу, для вашей идентификации. Вот к примеру, для вашей идентификации серверу нужен ваш логи и пароль. Дальше вам нужно отправить id бота или как там они идентифицируется. Значит у вас в вашей кучке данных будет три поля - логин, пароль и id-бота. И вы создаете класс который вмещает все эти поля, например:

public class Regest{ private Integer id; private String login; private Integer bot_id;

public Regest(Integer id,String login,Integer bot_id) {
    this.id= id;
    this.login= login;
    this.bot_id= bot_id;
}
}
  1. Класс-ответ - этот класс будет помогать вам обрабатывать ответ вашего сервера, то есть ответ вашего бота. В этот класс будет входить массив ваших сообщений и еще какие-то данные которые он будет слать, без примера ответа довольно сложно представить что там есть.
  2. Послание запроса из активности и заполнение вашего вью-элемента: После того как вы все сделали вышеперечисленное, вам пора послать запрос. Для этого из активности вы должны послать запрос и полученные данные распарсить в вьюху:

 public APIService apiService() { 
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); 
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
    OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build(); 
 
    Retrofit retrofit = new Retrofit.Builder() 
            .baseUrl(url) 
            .client(client) 
            .addConverterFactory(GsonConverterFactory.create()) 
            .build(); 
 
    return retrofit.create(APIService.class); 
} 
 
 public void getData() { 
     mAPIService.auth(new Regest(login, password, bot_id)).enqueue(new Callback<SpeakWithBot>() { 
            @Override 
            public void onResponse(@NonNull Call<SpeakWithBot> call, @NonNull Response<SpeakWithBot> response) { 
                if (response.isSuccessful()) { 
здесь обрабатываете то что вам прислал сервер 
} 
 
            @Override 
            public void onFailure(@NonNull Call<GetToken> call, @NonNull Throwable t) { 
            } 
        });

для обработки вашего ответа можете использовать как recyclerView с адаптером подстроенным под ваши данные, так и любой другой вью элемент. Если я где-то ошибся, то найдутся те кто меня исправит, или откорректирует мой ответ. Но я почему-то уверен что используя retrofit можно обрабатывать то что шлет вам в ответ ваш бот. Надеюсь что помог чем-то в решении вашей проблемы. Удачи :)

READ ALSO
Робота с HashMap &amp; HashSet

Робота с HashMap & HashSet

Изучаю коллекции, стараюсь подвести итоги по HashMap & HashSet если я в чём то не прав, пишите

137
Не изменяется текст в TextView

Не изменяется текст в TextView

Подскажите пожалуйста, в чем может быть проблема: не заменяется текст в TextView (проверял, ID ресурсов не пересекаются):

123
Проверить подписан на канал YouTube [закрыт]

Проверить подписан на канал YouTube [закрыт]

У меня есть приложение и в приложении есть игровые монеты, теперь, я хочу сделать, чтоб по кнопке предлагалось подписаться на канал в Yotube и за подписку...

135