使用java-skype api通过taskan发送Skype消息

8
我需要帮助解决我的Java项目。我正在尝试在特定操作发生时在Skype对话中发送消息。
为此,我使用taskan的Java-Skype API v1.4
以下是我的代码:
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访问后,什么都没发生。没有消息被发送。

这与你的问题无关,但我想说,看到一些问题几乎没有付出任何努力之后,看到一个已经做出了努力是令人耳目一新的。 - anon
需要帮助,问题仍然存在。 - Stefan x
所以请遵循Captain_D1的指示,告诉我们ep是什么。 - anon
ep和p是一样的...它是事件中玩家的名称...它根本不起作用。 - Stefan x
2个回答

4
抱歉回复晚了,假设您还没有选择答案,问题仍然存在。 我试图以与您相同的方式获取组,但不幸的是它不起作用。我不知道这是API问题还是微软停止支持第三方API导致某些功能无法正常工作。 我成功地通过搜索聊天而不是组来解决了这个问题。如果您只是将要查找的聊天(组)添加到书签(收藏夹),那么这将更加容易。
    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仅适用于点对点聊天。如果您想创建点对点聊天,您需要在任何聊天中使用/createmoderatedchat命令,它将创建一个新的空点对点聊天。任何其他组都将自动基于云。

还请查看this

第二次编辑

API已完全失效


是的,它可以!我正在为群聊工作。你能给我你的代码吗? - Little Jacod
Chat group = null; try { for (Chat f : Skype.getAllBookmarkedChats()) { group = f; group.send("Der Spieler " + ep.getDisplayName() + " hat den Server betreten"); } } catch (SkypeException u) { u.printStackTrace(); } - Stefan x
@Stefanx 你有把你的聊天加入收藏夹吗? - Little Jacod
谢谢,@LittleJacod,它有效!我注意到的唯一一件事是,Java API总是告诉我没有收藏的聊天记录(不真实)。 - Pavel Vlasov
@PavelVlasov 很高兴它能正常工作 :D 如果你们喜欢的话,可以查看我的 skypebot,它有很多功能,如果你正在编写自己的机器人,欢迎帮助我 :) - Little Jacod
显示剩余3条评论

0

我对Skype API了解不多,但你可以查看samples以获取帮助。如果你想在收到聊天消息时发送一条聊天消息,可以使用AutoAnswering示例:

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 不允许新用户发表评论。

谢谢,但我不需要监听器。我只是想简单地发送消息,但它不起作用 :( - Stefan x

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接