openplanning

Hướng dẫn sử dụng Skype Java API

  1. Thư viện
  2. Nguyên tắc hoạt động
  3. Tạo Project
  4. Ví dụ gửi tin nhắn tới một tài khoản skype khác
  5. Gọi điện
  6. Sửa thông tin cá nhân
  7. Tự động trả lời
  8. Tạo MenuItem trên skype

1. Thư viện

Nếu bạn tìm kiếm google từ khóa "skype4java", "skype java api" kết quả bạn nhận được khá nhiều các đường link để download, tuy nhiên các thư viện đó rất cũ (2005, 2006) và không thể chạy được trên window 64 bit. Thư viện tốt nhất mà tôi tìm thấy cho phép bạn chạy tốt trên tất các phiên bản window, kể cả window 64bit.
Bạn có thể download file jar để sử dụng hoặc khai báo sử dụng thông qua Maven.
Mở file jar bằng winrar sẽ thấy nó chứa cả các file dll cho cả window 32bit và 64bit.
  • skype-java-api-1.4.jar

2. Nguyên tắc hoạt động

Trên máy tính chạy chương trình Java tương tác với skype, bạn phải cài đặt Skype và đảm bảo rằng nó đang chạy (Nghĩa là phải login vào với một nick nào đó).

Chú ý: Thư viện Skype Java API này đã được kiểm chứng chạy tốt trên hệ điều hành Window, và tôi chưa test trên các hệ điều hành khác!

3. Tạo Project

Tạo mới một Project, tạo thư mục libs, copy file skype-java-api-*.jar vào thư mục libs như minh họa dưới đây.
Khai báo thư viện với Project bằng cách nhấn phải chuột vào Project chọn Properties:

4. Ví dụ gửi tin nhắn tới một tài khoản skype khác

Chú ý quan trọng:
Skype phiên bản >= 7 ngừng hỗ trợ gửi tin nhắn từ một phần mềm thứ 3 (Chẳng hạn Java Skype API). Chính vì vậy trên máy tính gửi tin nhắn tự động bạn cần cài đặt Skype 6.x
Bạn có thể download Skype 6.3.x tại đây:
Constants.java
package org.o7planning.tutorial.skype;

public class Constants {

 // Nick name skype của người nhận.
 // Hãy nhập lại nick name trước khi bắt đầu các ví dụ.
 public static final String SKYPE_FRIEND_NICKNAME = "friend_nick_name";

}
SendChatMessage.java
package org.o7planning.tutorial.skype;

import com.skype.Skype;
import com.skype.SkypeException;

public class SendChatMessage {

   public static void main(String[] args) {

       try {
           String message = "Hello, This is test message";

           Skype.chat(Constants.SKYPE_FRIEND_NICKNAME).send(message);

           System.out.println("Message sent!");

       } catch (SkypeException e) {
           e.printStackTrace();
       }

   }
}
Trong lần đầu tiên chạy class SendChatMessage bạn sẽ bị một Exception, Skype đã chặn truy cập của Java, và hỏi bạn có cho phép ứng dụng Java truy cập và Skype hay không. Nhấn "Allow access" để cho phép.

5. Gọi điện

Một ví dụ khác cho phép bạn gọi điện tới một nick name khác từ Java.
MakeCall.java
package org.o7planning.tutorial.skype;

import com.skype.Skype;
import com.skype.SkypeException;

public class MakeCall {

  public static void main(String[] args) {
      try {
          Skype.call(Constants.SKYPE_FRIEND_NICKNAME);
      } catch (SkypeException e) {
          e.printStackTrace();
      }
  }

}
Ngay sau khi chạy class MakeCall. Skype trên máy tính mà chương trình Java của bạn đang chạy sẽ tạo một cuộc gọi tới Skype của người kia.

6. Sửa thông tin cá nhân

Bạn có thể thay đổi thông tin skype của bạn chẳng hạn như hồ sơ (profile), ngày sinh, ảnh,... từ class Java của bạn.
EditProfile.java
package org.o7planning.tutorial.skype;

import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import com.skype.Profile;
import com.skype.Skype;

public class EditProfile {

   public static void main(String[] args) {

       String moodText = "No thing to do today!";

       try {
           Profile profile =Skype.getProfile();

           //
           profile.setMoodMessage(moodText);
           
           // Full Name
           profile.setFullName("My Name");

           // Change Avatar
           File avataFile = new File("C:/mypictures/avatar.png");
           BufferedImage image = ImageIO.read(avataFile);
           profile.setAvatar(image);

       } catch (Exception e) {
           e.printStackTrace();
       }
   }
}

7. Tự động trả lời

Ví dụ sau đây sẽ tự động trả lời các tin nhắn người khác gửi tới Skype của bạn.
AutoAnswering.java
package org.o7planning.tutorial.skype;

import com.skype.ChatMessage;
import com.skype.ChatMessageAdapter;
import com.skype.Skype;
import com.skype.SkypeException;
import com.skype.User;

public class AutoAnswering {

  public static void main(String[] args) throws Exception {

      System.out.println("Start Auto Answering ...");
     
      // Đảm bảo ứng dụng của bạn vẫn lắng nghe
      // và chờ đợi các tin nhắn được gửi tới.
      Skype.setDaemon(false);
     
     
      Skype.addChatMessageListener(new ChatMessageAdapter() {
          public void chatMessageReceived(ChatMessage received)
                  throws SkypeException {
              if (received.getType().equals(ChatMessage.Type.SAID)) {
                  // Người gửi    
                  User sender =received.getSender();    
                 
                  System.out.println(sender.getId() +" say:");
                  System.out.println(" "+received.getContent() );
                 
                  received.getSender().send(
                          "I'm working. Please, wait a moment.");
                 
                  System.out.println(" - Auto answered!");
              }
          }
      });
     
     
      System.out.println("Auto Answering started!");
  }

}
Chạy class AutoAnswering:
Tới đây chương trình đang lắng nghe các tin nhắn gửi tới từ các nick Skype khác, và sẽ tự động trả lời, việc tự động trả lời kết thúc khi bạn dừng chương trình java (Nhấn nút đỏ như hình phía trên).
Nhận được tin nhắn gửi tới:

8. Tạo MenuItem trên skype

Chúng ta sẽ tạo một MenuItem trên Skype để làm một nhiệm vụ gì đó khi bạn click vào nó.
ShowMenuItem.java
package org.o7planning.tutorial.skype;

import com.skype.MenuItem;
import com.skype.MenuItemClickEvent;
import com.skype.MenuItemListener;
import com.skype.Skype;
import com.skype.SkypeClient;
import com.skype.SkypeException;


public class ShowMenuItem {
   
   
   public static void main(String[] args) throws Exception {
       // Ghi ra Log, các sự kiện
       Skype.setDebug(true);
       
       //
       Skype.setDaemon(false);

       // Thêm một MenuItem vào Skype (Xem hình minh họa phía dưới)
       final MenuItem item = SkypeClient.addMenuItem(MenuItem.Context.TOOLS,
               "Test menu", null, null, true, null, true);
       
       item.setHint("This is test menu item");
       
       // Sử lý các sự kiện liên quan tới MENU.
       item.addMenuItemListener(new MenuItemListener() {
           public void menuItemClicked(MenuItemClickEvent event)
                   throws SkypeException {
               System.out.println("Test menu is clicked.");
               
               // Hủy Menu
               // event.getMenuItem().dispose();
           }
       });
   }
}
Kết quả chạy chương trình:

Chú ý: Khi bạn nhấn nút đỏ để tắt ứng dụng java này, Skype sẽ trở về trạng thái ban đầu.

Xem trên skype: