2017-08-26 9 views
1

会話サービスは、Javaコードは私の主な問題は、Clojureの中に、このClojureの:Javaの相互運用IBMワトソンの会話サービス

**MessageRequest newMessage = new MessageRequest.Builder().inputText(input).context(context).build();** 

を記述する方法である

import com.ibm.watson.developer_cloud.conversation.v1.ConversationService; 
import com.ibm.watson.developer_cloud.conversation.v1.model.MessageRequest; 
import com.ibm.watson.developer_cloud.conversation.v1.model.MessageResponse; 

/* 
some code written here 
*/ 
MessageRequest newMessage = new MessageRequest.Builder().inputText(input).context(context).build(); 

として書かれています。これは私が今までにやったことある

助けてください

(ns clj.core 
(:import 
    (com.ibm.watson.developer_cloud.conversation.v1 ConversationService) 
    (com.ibm.watson.developer_cloud.conversation.v1.model MessageRequest) 
    (com.ibm.watson.developer_cloud.conversation.v1.model MessageResponse))) 

(let [username "foo" 
     password "bar" 
     input "hello" 
     context {} 
     workspaceId "ibm-watson-id" 
     service (ConversationService. "2017-08-26") 
     userPass (.setUsernameAndPassword service username password) 

     ;obviously this is wrong 
     ;dont know how to get this right 
     newMessage (.build (.context context (.inputText input (MessageRequest.Builder.)))) 



     response (.message service workspaceId newMessage)] 
     response) 

です。おかげ

答えて

3

なるほど、最終的にはそれを考え出し、それはMessageRequestクラスはビルダーと呼ばれる別のクラスを持っているようだ

私がしたすべては、このクラスを参照してニードフル

(ns clj.core 
(:import 
    (com.ibm.watson.developer_cloud.conversation.v1 ConversationService) 
    (com.ibm.watson.developer_cloud.conversation.v1.model MessageRequest) 
    (com.ibm.watson.developer_cloud.conversation.v1.model MessageResponse))) 

(let [username "foo" 
    password "bar" 
    input "hello" 
    context {} 
    workspaceId "ibm-watson-id" 
    service (ConversationService. "2017-08-26") 
    userPass (.setUsernameAndPassword service username password) 

    ;just wanna make it work 
    msgReq (MessageRequest$Builder.) 
    inputText (.inputText msgReq input) 
    content (.context inputText context) 
    newMessage (.build content) 
    response (.execute (.message service workspaceId newMessage))] 
    (println "Watson Response: " response)) 
+1

'doto'がためにいいです微調整することでした' - >'は、オブジェクトの状態変化を強要する必要がある場合、 ' - >'はそれらのビルダーパターンに適しています: 'new-message(MessageRequest $ Builder。)(.inputText input)(.context context)(.build) ) ';このようにして、ビルダー間のすべての状態に名前を付けることについて考える必要はありません。 – cfrick

+0

素晴らしい、ありがとう –

関連する問題