Skip to content

Commit 0c74bef

Browse files
committed
[UPD] Conversation add methods
1 parent 33baf8c commit 0c74bef

File tree

5 files changed

+163
-37
lines changed

5 files changed

+163
-37
lines changed
32.4 KB
Binary file not shown.

Example/RecastAI.xcworkspace/xcuserdata/PE.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
ignoreCount = "0"
2727
continueAfterRunningActions = "No"
2828
filePath = "../Pod/Classes/Entities.swift"
29-
timestampString = "512522316.773246"
29+
timestampString = "512558078.486835"
3030
startingColumnNumber = "9223372036854775807"
3131
endingColumnNumber = "9223372036854775807"
32-
startingLineNumber = "596"
33-
endingLineNumber = "596"
32+
startingLineNumber = "565"
33+
endingLineNumber = "565"
3434
landmarkName = "init(map:)"
3535
landmarkType = "7">
3636
</BreakpointContent>

Pod/Classes/ConverseResponse.swift

Lines changed: 105 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,23 @@ import Alamofire
1111

1212
open class ConverseResponse: Mappable {
1313

14+
static fileprivate let base_url : String = "https://api.recast.ai/v2/"
15+
static fileprivate let textConverse : String = base_url + "converse"
16+
1417
public var uuid: String!
1518
public var source: String!
1619
public var replies: [String]?
1720
public var action: Action?
1821
public var next_actions: [Action]?
19-
public var memory: [String : Any]?
22+
public var memory: [String : [String : Any]]?
2023
public var entities: Entities?
2124
public var intents: [Intent]?
2225
public var conversation_token: String!
2326
public var language: String!
2427
public var timestamp: String!
2528
public var version: String!
2629
public var status: Int!
30+
public var requestToken : String! = ""
2731

2832
required convenience public init?(map: Map) {
2933
self.init()
@@ -69,5 +73,105 @@ open class ConverseResponse: Mappable {
6973
}
7074
return (nil)
7175
}
76+
77+
/**
78+
Get memory entity
79+
80+
*/
81+
public func getMemory(entity: String) -> [String : AnyObject]? {
82+
for (key, _) in memory! {
83+
if key == entity {
84+
let json = memory! as [String : AnyObject]
85+
return json[entity] as? [String : AnyObject]
86+
}
87+
}
88+
return (nil)
89+
}
90+
91+
/**
92+
Set memory entity
93+
94+
*/
95+
public func resetMemory(entity: [String : [String : Any]]) -> Void {
96+
let headers = ["Authorization": "Token " + self.requestToken]
97+
let parameters = ["conversation_token" : self.conversation_token, "memory" : entity] as! [String : Any]
98+
Alamofire.request(ConverseResponse.textConverse, method: .put, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON {
99+
response in
100+
switch response.result {
101+
case .success(let value):
102+
print (value)
103+
break
104+
case .failure(let error):
105+
print (error)
106+
break
107+
}
108+
}
109+
}
110+
111+
/**
112+
Reset memory entity
113+
114+
*/
115+
public func resetMemory(entity: String) -> Void {
116+
//Reset all memory
117+
memory?[entity] = ["" : ""]
118+
let headers = ["Authorization": "Token " + self.requestToken]
119+
let parameters = ["conversation_token" : self.conversation_token, "memory" : memory as Any]
120+
Alamofire.request(ConverseResponse.textConverse, method: .put, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON {
121+
response in
122+
switch response.result {
123+
case .success(let value):
124+
print (value)
125+
break
126+
case .failure(let error):
127+
print (error)
128+
break
129+
}
130+
}
131+
}
132+
133+
/**
134+
Reset memory
135+
136+
*/
137+
public func resetMemory() -> Void {
138+
//Reset all memory
139+
for _ in memory! {
140+
_ = ""
141+
}
142+
let headers = ["Authorization": "Token " + self.requestToken]
143+
let parameters = ["conversation_token" : self.conversation_token, "memory" : memory as Any]
144+
Alamofire.request(ConverseResponse.textConverse, method: .put, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON {
145+
response in
146+
switch response.result {
147+
case .success(let value):
148+
print (value)
149+
break
150+
case .failure(let error):
151+
print (error)
152+
break
153+
}
154+
}
155+
}
156+
157+
/**
158+
Reset conversation
159+
160+
*/
161+
public func resetConversation() -> Void {
162+
let headers = ["Authorization": "Token " + self.requestToken]
163+
let parameters = ["conversation_token" : self.conversation_token] as [String : Any]
164+
Alamofire.request(ConverseResponse.textConverse, method: .delete, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON {
165+
response in
166+
switch response.result {
167+
case .success(let value):
168+
print (value)
169+
break
170+
case .failure(let error):
171+
print (error)
172+
break
173+
}
174+
}
175+
}
72176
}
73177

Pod/Classes/Entities.swift

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -77,38 +77,7 @@ public class Entities : Mappable
7777
*/
7878

7979
required public init?(map: Map){
80-
// check if a required "name" property exists within the JSON.
81-
// self.init()
82-
// mapping(map: map)
83-
// if map.JSON["cardinals"] == nil {return nil}
84-
// if map.JSON["colors"] == nil {return nil}
85-
// if map.JSON["datetimes"] == nil {return nil}
86-
// if map.JSON["distances"] == nil {return nil}
87-
// if map.JSON["durations"] == nil {return nil}
88-
// if map.JSON["emails"] == nil {return nil}
89-
// if map.JSON["emojis"] == nil {return nil}
90-
// if map.JSON["ips"] == nil {return nil}
91-
// if map.JSON["interval"] == nil {return nil}
92-
// if map.JSON["jobs"] == nil {return nil}
93-
// if map.JSON["languages"] == nil {return nil}
94-
// if map.JSON["locations"] == nil {return nil}
95-
// if map.JSON["masses"] == nil {return nil}
96-
// if map.JSON["moneys"] == nil {return nil}
97-
// if map.JSON["nationalities"] == nil {return nil}
98-
// if map.JSON["numbers"] == nil {return nil}
99-
// if map.JSON["ordinals"] == nil {return nil}
100-
// if map.JSON["durations"] == nil {return nil}
101-
// if map.JSON["organizations"] == nil {return nil}
102-
// if map.JSON["percents"] == nil {return nil}
103-
// if map.JSON["persons"] == nil {return nil}
104-
// if map.JSON["phone"] == nil {return nil}
105-
// if map.JSON["pronouns"] == nil {return nil}
106-
// if map.JSON["sets"] == nil {return nil}
107-
// if map.JSON["sorts"] == nil {return nil}
108-
// if map.JSON["speeds"] == nil {return nil}
109-
// if map.JSON["temperatures"] == nil {return nil}
110-
// if map.JSON["urls"] == nil {return nil}
111-
// if map.JSON["volumes"] == nil {return nil}
80+
11281
}
11382

11483
// Mappable

Pod/Classes/RecastAI.swift

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,66 @@ public class RecastAIClient
7373
switch response.result {
7474
case .success(let value):
7575
let recastResponse = (value as! [String : AnyObject])["results"] as! [String : Any]
76-
successHandler(Mapper<ConverseResponse>().map(JSON: recastResponse)!)
76+
let converseResponse = Mapper<ConverseResponse>().map(JSON: recastResponse)!
77+
converseResponse.requestToken = self.token
78+
successHandler(converseResponse)
7779
case .failure(let error):
7880
failureHandle(error)
7981
}
8082
}
8183
}
8284

85+
/**
86+
Make a text converse to Recast API
87+
88+
- parameter request: sentence to send to Recast API
89+
- parameter lang: lang of the sentence if needed
90+
- parameter successHandler: closure called when request succeed
91+
- parameter failureHandler: closure called when request failed
92+
93+
- returns: void
94+
*/
95+
public func converseFile(_ audioFileURL: URL, token : String? = nil, converseToken : String? = nil, lang: String? = nil, successHandler: @escaping (ConverseResponse) -> Void, failureHandle: @escaping (Error) -> Void)
96+
{
97+
if let tkn = token
98+
{
99+
self.token = tkn
100+
}
101+
let headers = ["Authorization" : "Token " + self.token]
102+
var ln : String = lang!
103+
let conversationToken : String = converseToken!
104+
if (self.language != nil)
105+
{
106+
ln = self.language!
107+
}
108+
Alamofire.upload(multipartFormData: { multipartFormData in
109+
multipartFormData.append(audioFileURL, withName: "voice")
110+
multipartFormData.append(ln.data(using: String.Encoding.utf8)!, withName: "language")
111+
multipartFormData.append(conversationToken.data(using: String.Encoding.utf8)!, withName: "conversation_token")
112+
},
113+
to: RecastAIClient.voiceConverse,
114+
method: .post,
115+
headers: headers,
116+
encodingCompletion: { encodingResult in
117+
switch encodingResult {
118+
case .success(let upload, _, _):
119+
upload.responseJSON { response in
120+
switch response.result {
121+
case .success(let value):
122+
let recastResponse = (value as! [String : AnyObject])["results"] as! [String : Any]
123+
let converseResponse = Mapper<ConverseResponse>().map(JSON: recastResponse)!
124+
converseResponse.requestToken = self.token
125+
successHandler(converseResponse)
126+
case .failure(let error):
127+
failureHandle(error)
128+
}
129+
}
130+
case .failure(let encodingError):
131+
failureHandle(encodingError)
132+
}
133+
})
134+
}
135+
83136
/**
84137
Make a text request to Recast API
85138

0 commit comments

Comments
 (0)