使用taskan的java-skype api以Java形式发送Skype消息

时间:2015-01-13 21:26:11

标签: java chat skype

我的java项目需要帮助。我正在尝试在特定操作发生时在Skype对话中发送消息。

为此,我使用java-skype API v1.4 by taskan

这是我的代码:

try {
    for (Group group : Skype.getContactList().getAllGroups()) {
        if ((group.getDisplayName()).equals("Nameofthegroup")) { //Whatever the group name is
            String id = group.getId();
            Skype.chat(id).send(ep.getDisplayName() + " joins !");
            ep.sendMessage("Die ID: "+ id);
        }
    }
} catch (Exception e3) {
    e3.printStackTrace();
}

我也尝试过:

try {
    String id = Skype.getContactList().getGroup("Groupname").getId();
    Skype.chat(id).send(p + "joins!");
} catch (SkypeException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

我的问题是Skype注册外部程序试图做某事,但在我允许访问Java之后,没有其他事情发生。没有消息被发送。

2 个答案:

答案 0 :(得分:4)

对于迟到的答案感到抱歉,但假设您尚未选择答案,问题仍然存在。

我试图以同样的方式让你的团队,但不幸的是它不会像这样工作。如果这是API问题,或者仅仅因为微软dropped support from third party APIs某些功能无效,我不会这样做。

我设法通过搜索不是群组的聊天来解决这个问题。如果您只想添加(在收藏夹中添加)您要查找的聊天(群组),这将更容易。

    Chat group = null;

    for ( Chat c : Skype.getAllBookmarkedChats() ){
        group = c;
    }

我只是在我的收藏夹中进行群组聊天,因此检索它非常容易!如果您有更多聊天,并且需要更通用的方法来查找特定的聊天,还有几种方法可以做到这一点。

    for (Chat c : Skype.getAllChats()){
        c.getAllMembers();
        c.getId();
        c.getWindowTitle();
    }
    group = c;

但这会更难。 getId()方式可能看起来更容易,但我没有设法让它工作。不知道是不是我的问题或只是API,但无论我尝试简单只是没有工作。 不要忘记在控制台上打印您的结果以放松自己。

最后,如果您设法进行群组聊天,则发送消息非常简单:

group.send("Hi chat! This is java!!");

修改

此api仅适用于p2p聊天。如果你想创建一个p2p聊天,你需要在任何聊天中使用 / createmoderatedchat 命令,它将创建一个新的空p2p聊天。任何其他组都将自动基于云。

同时检查this

第二次编辑

API完全死了

答案 1 :(得分:0)

我对Skype API了解不多,但您可以查看samples以获取帮助。如果您想在有人向您发送聊天消息时发送聊天消息,您可以使用自动应答示例:

package com.skype.sample;

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

public class AutoAnswering {
    public static void main(String[] args) throws Exception {
        Skype.setDaemon(false); // to prevent exiting from this program
        Skype.addChatMessageListener(new ChatMessageAdapter() {
            public void chatMessageReceived(ChatMessage received) throws SkypeException {
                if (received.getType().equals(ChatMessage.Type.SAID)) {
                    received.getSender().send("I'm working. Please, wait a moment.");
                }
            }
        });
    }
}

您的代码中包含一个未定义的变量ep,因此我无法给您更好的答案。我会发表评论询问,但Stack Overflow不会让新人发表评论。