如何以不同方式对AppleScript控件的iMessage进行回复?

时间:2013-05-06 14:50:50

标签: applescript reply imessage

我已经在Applescript中编写了我自己的Jarvis版本几天了,我一直使用iMessages作为我的输入和输出,因为我喜欢它的可移植方式,但我现在想要更先进并开始让它觉得它有用。

目前我只使用简单的代码行来识别我发送内容的时间,然后运行相应的脚本来发送回复。比如,如果我说“你好”,它会说“你好先生”回到我身边。

一个例子是:

using terms from application "Messages"
    on message received theMessage from theBuddy for theChat

        if theMessage is "hello" then
            run script ("/Users/Alex/Desktop/JarvisScripts/hello.scpt" as POSIX file)
        end if

    end message received
end using terms from

一切都很好,但正如我之前所说的那样,我想要更进一步,我需要一种方式可以问我一个问题,比如“你好吗”,然后根据我所说的回答,例如“好”它将运行正确的脚本来响应“好”。 我目前的尝试遵循:

if theMessage contains "Are you ok" then
    run script ("/Users/Alex/Desktop/JarvisScripts/areyouok.scpt" as POSIX file)

    if theMessage is "I'm fine" then
        run script ("/Users/Alex/Desktop/JarvisScripts/happy.scpt" as POSIX file)
    else
        if theMessage is "No I'm not" then
            run script ("/Users/Alex/Desktop/JarvisScripts/unhappy.scpt" as POSIX file)
        end if
    end if
end if

但我知道这远非正确。那么,任何人都可以帮我一些代码吗?感谢

1 个答案:

答案 0 :(得分:0)

而不是将“响应”存储在单独的脚本文件中。请尝试使用处理程序。

例如:

if theMessage contains "Are you ok" then
    run script ("/Users/Alex/Desktop/JarvisScripts/areyouok.scpt" as POSIX file)

    if theMessage is "I'm fine" then
        happyResponse()
    else
        if theMessage is "No I'm not" then
            unhappyResponse()
        end if
    end if
end if


--HANDLERS--
on unhappyResponse()
    --<<whatever you want to happen (the code inside your .scpt file)>>
end unhappyResponse

on happyResponse()
    --<<put the contents of happy.scpt here>>
end happyResponse

正如您所看到的,“处理程序”列在代码的底部,每当调用其中一个函数时,都会对代码进行评估。现在我不知道你的.scpt文件里面是什么,但这应该适用于大多数用途。