【问题标题】:Sending Skype messages in Java, using the java-skype api by taskan使用 taskan 的 java-skype api 在 Java 中发送 Skype 消息
【发布时间】:2015-01-13 21:26:11
【问题描述】:

我的 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 访问之后,没有其他任何事情发生。没有消息发送。

【问题讨论】:

  • 这与您的问题无关,但我想说的是,在看到几个问题几乎没有付出任何努力之后,看到有一个问题令人耳目一新。
  • 需要帮助还是有问题。
  • 所以按照 Captain_D1 的指示告诉我们ep 是什么。
  • ep 和 p 一样……是事件中玩家的名字……根本不起作用

标签: java chat skype


【解决方案1】:

很抱歉回答迟了,但假设您尚未选择答案,问题仍然存在。

我曾尝试以与您相同的方式建立小组,但不幸的是,它不是这样工作的。如果这是 API 问题,或者只是因为 microsoft 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 完全死了

【讨论】:

  • 是的,我仍然有这个问题 :) 我明天会试试这个 谢谢你的回答 :)) 希望它会工作
  • 如果您需要更多帮助,请告诉我
  • 是的,有问题... :) 这对群聊有用吗?因为如果我尝试它,我会得到错误:NotAttachedException?
  • 是的!我正在为群聊工作。你能给我你的代码吗?
  • 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(); } }
【解决方案2】:

我对 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 不允许新人制作 cmets。

【讨论】:

  • 谢谢,但我不需要听众。我只是想发送消息,但它不起作用:(
猜你喜欢
  • 2018-05-04
  • 2017-10-25
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2020-04-08
  • 1970-01-01
相关资源
最近更新 更多