接入图灵机器人实现XMPP

原创 2015年07月07日 15:23:36

接入图灵机器人实现XMPP

转载请注明出处

  • 注册图灵帐号密码,得到key
  • 逻辑处理

1.注册图灵信息。

网站地址: [ 图灵 ]
得到appkey

2.代码展示

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.yudehai.text.SecondActivity" >

    <TextView 
        android:layout_width="match_parent"
        android:layout_height="50dip"
        android:textSize="20sp"
        android:gravity="center"
        android:text="客服美眉"
        android:background="#00ff00"
        />
    <ListView 
        android:id="@+id/listView"
        android:layout_marginTop="50dip"
        android:layout_marginBottom="50dip"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:stackFromBottom="true"
        ></ListView>
    <LinearLayout 
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="50dip"
        android:weightSum="4"
        >
        <EditText 
            android:id="@+id/message"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:ems="8"
            />
        <Button 
            android:id="@+id/send"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="發送"
            android:layout_weight="1"
            android:gravity="center"
            />
    </LinearLayout>

</RelativeLayout>

其实也就是一个ListView 属性android:stackFromBottom=”true” 意思是从底部向上开始展示数据

public class SecondActivity extends Activity implements OnCallListener{

    /***
     * 图灵key
     * 替换为你自己的图灵Key
     */
    private static final String TULING_APPKEY="";
    private static final String Pre = "http://www.tuling123.com/openapi/api?key=";
    private ListView list;
    private Button send;
    private EditText edit;
    private List<String> lists;
    private MyAdapter adapter;
    private ToastUtils pro;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        pro = new ToastUtils(this);
        list = (ListView) findViewById(R.id.listView);
        lists = new ArrayList<String>();
        adapter = new MyAdapter(this,lists);
        list.setAdapter(adapter);
        send = (Button) findViewById(R.id.send);
        edit = (EditText) findViewById(R.id.message);
        send.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if(TextUtils.isEmpty(edit.getText().toString())){
                    Toast.makeText(SecondActivity.this, "不可爲空", Toast.LENGTH_SHORT).show();
                }else{
                    pro.showunclickToastAlong();
                    lists.add(edit.getText().toString());
                    adapter.notifyDataSetChanged();
                    //KEY&info=你漂亮么
                    new JsonAsyncTask(SecondActivity.this).execute(Pre+TULING_APPKEY+"&info="+edit.getText().toString());
                    View softview = SecondActivity.this.getWindow().peekDecorView();
                    if (softview != null && softview.getWindowToken() != null) {
                        InputMethodManager inputmanger = (InputMethodManager) SecondActivity.this
                                .getSystemService(MainActivity.INPUT_METHOD_SERVICE);
                        inputmanger.hideSoftInputFromWindow(softview.getWindowToken(), 0);
                    }
                    edit.setText("");
                }
            }
        });
    }


    @Override
    public void getMessage(String str) {
        pro.cancel();
        if(TextUtils.isEmpty(str)){
            lists.add("没网了,点你妹?");
        }else{
            lists.add(str);
        }
        adapter.notifyDataSetChanged();
        list.setSelection(lists.size()-1);
    }
}

代码其实很简单,只不过就是需要定义当返回为空或者访问失败自动填写一个数据,一行添加一行么,你懂的。解析用的是AsyncTask 详细了解请看AsyncTask详解
TULING_APPKEY只需要将这个key值填写成自己的key ,Pre的

顺便贡献一个仿苹果progress先上张效果图

这里写图片描述

代码其实也就是一个工具类

public class ToastProUtils {
private static ToastProUtils instanse = null;
private static Dialog dialog;
private static View view;
private TextView tv;

public synchronized static ToastProUtils getInstanse(Context context) {

    if (instanse == null) {
        instanse = new ToastProUtils();
    }
    dialog = new Dialog(context, R.style.MyDialogStyle);
    view = LayoutInflater.from(context).inflate(R.layout.progressbar_item,
            null);
    dialog.setContentView(view);
    ImageView progressImageView = (ImageView) view
            .findViewById(R.id.myloading_image_id);
    AnimationDrawable animationDrawable = (AnimationDrawable) progressImageView
            .getDrawable();
    animationDrawable.start();
    WindowManager wm = ((Activity) context).getWindowManager();
    Display display = wm.getDefaultDisplay();
    android.view.WindowManager.LayoutParams lp = dialog.getWindow()
            .getAttributes();
    lp.width = display.getWidth() / 3;
    lp.height = LayoutParams.WRAP_CONTENT;
    dialog.getWindow().setAttributes(lp);
    return instanse;
}

private ToastProUtils() {

}

/**
 * 方法说明:
 * 
 */
public void show() {
    tv = null;
    tv = (TextView) view.findViewById(R.id.mylaodint_text_id);
    tv.setText("加载中...");
    if (dialog.isShowing()) {
        dialog.cancel();
        dialog.show();
    }
    dialog.show();
}
public void cancelKey(final boolean cancel){
    dialog.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(DialogInterface arg0, int arg1, KeyEvent arg2) {
            if (arg1 == KeyEvent.KEYCODE_BACK){
                if(cancel)
                    return false;
                else
                    return true;
            }
            return false;
        }
    });
}
public void unclickshow() {
    if (dialog.isShowing()) {
        dialog.cancel();
        dialog.setCanceledOnTouchOutside(false);
        dialog.show();
    } else {
        dialog.setCanceledOnTouchOutside(false);
        dialog.show();
    }
}

public void showstr(String str) {
    tv = null;
    tv = (TextView) view.findViewById(R.id.mylaodint_text_id);
    tv.setText(str);
    if (dialog.isShowing()) {
        dialog.cancel();
        dialog.show();
    }
    dialog.show();
}

public void unclickshowstr(String str) {
    tv = null;
    tv = (TextView) view.findViewById(R.id.mylaodint_text_id);
    tv.setText(str);
    if(dialog.isShowing()){
        dialog.cancel();
        dialog.setCanceledOnTouchOutside(false);
        dialog.show();
    } else {
        dialog.setCanceledOnTouchOutside(false);
        dialog.show();
    }
}

public void cancle() {
    if (dialog == null) {
        return;
    } else {
        dialog.cancel();
        tv =null;
    }
};

public void setStr(String str){
    tv = null;
    tv = (TextView) view.findViewById(R.id.mylaodint_text_id);
    tv.setText(str);
}

}

public class ToastUtils {
    private static final String TAG = "ToastUtils";
    private static Context mContext;
    private static String str = "";
    private ToastProUtils progress=null;

    public ToastUtils(Context context, String str) {
        if(progress==null){
            this.mContext = context;
            this.str = str;
            progress = ToastProUtils.getInstanse(context);
        }
    }

    public ToastUtils(Context context) {
        if(progress==null){
        this.mContext = context;
        progress = ToastProUtils.getInstanse(context);
        }
    }


    public void cancel() {
        if(progress!=null){
        progress.cancle();
        }
        str="";

    }

    public void showToastAlong() {
        if (progress != null) {
            if ("".equals(str)) {
                progress.show();
            } else {
                progress.showstr(str);
            }
        } else {
            return;
        }
    }


    /***
     * 
     * 方法说明:进度显示
     *
     * @param str
     */
    public void setStr(String str){
        if (progress != null) {
            if (!TextUtils.isEmpty(str)) {
                progress.setStr(str);
            } else {

            }
        } else {
            return;
        }
    }

    /***
     * 
     * 方法说明:不可点击的Show
     *
     */
    public void showunclickToastAlong() {
        if (progress != null) {
            if ("".equals(str)) {

                progress.unclickshow();
            } else {
                progress.unclickshowstr(str);
            }
        } else {
            return;
        }
    }

    public void showToastAlong(long delay) {
        showToastAlong();
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                ToastUtils.this.cancel();
            }
        };
        timer.schedule(task, delay);
    }

    public static void showToast(Context context, String str) {
        Toast toast = Toast.makeText(context, str, Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
        toast.show();
    }

    public static void showLongToast(Context context, String str) {
        Toast toast = Toast.makeText(context, str, Toast.LENGTH_LONG);
        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
        toast.show();
    }

    public void cancelDiaog(boolean cancel){
        if(progress!=null){
        progress.cancelKey(cancel);
        }
        progress=null;
        str="";

    }

Demo 下载地址 :图灵xmpp

第一次写博客 好紧张,欢迎各路大神指点

版权声明:本文为博主原创文章,未经博主允许不得转载。

微信接入图灵机器人maven项目

  • 2016年03月16日 15:33
  • 32KB
  • 下载

个人微信接入图灵机器人(基于Python)

开发环境:Ubuntu14.04 编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号,创建机器人,如果只是学习的话,可以使用免费版,一个...
  • thx9537
  • thx9537
  • 2017年02月03日 22:43
  • 777

图灵机器人SDK接入指南

图灵机器人SDK接入指南图灵机器人:官网注册账号注册个账号,创建个应用,进入后台,点开机器人接入,你会看到API key和secret下载SDK点击下载Android SDK,解压以后会有libsco...

使用nodejs接入物联网完成图灵机器人对话

贝壳物联bigiot.net以下代码使用nodejs,硬件是树莓派3。参照bigiot.net的Api,再跟着这些代码,你就能用你的树莓派,收发来数据。 使用了图灵机器人的Api,使用get请求接口...

微信开发学习(2)——微信平台接入图灵机器人

package com.imooc.servlet;import java.io.IOException; import java.io.PrintWriter; import java.util.D...

Android图灵机器人的实现(一)

前二天,看了Android 智能问答机器人的实现的博文,我们可以进入图灵机器人主页,根据平台接入的介绍,我们知道,主是要在客户端按一定的格式(key 必须 + userid get 非必须,上下文功...

Delphi 实现 图灵机器人API(IDHTTP POST )

此功能所需的 Key及接口文档,都可以在图灵机器人的官网下载, 小伙伴们需要申请自己的图灵机器人账号。       申请方法请自行百度“图灵机器人”  。       登录账号后,在左侧的[机器人...

图灵机器人接口实现自动回复(web版)

这周刚好在研究网站里的自动回复客服( 机器人),在网上看了很多资料,大都是基于移动端,网页版的少之又少。在踩了无数个坑之后终于摸索出了一条泥泞小路(哭兮兮),在这里跟大家分享一下,有不足之处欢迎指正(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:接入图灵机器人实现XMPP
举报原因:
原因补充:

(最多只允许输入30个字)