Evo Voice

<back to all web services

LiveAnswerCallback

The following routes are available for this service:
All Verbs/nodes/live-answer/callback
import Foundation
import ServiceStack

public class LiveAnswerCallback : Codable
{
    public var sessionId:String
    public var flowId:String
    public var nodeId:String
    public var clientId:String
    public var conversationId:String
    public var aiMinutes:Int
    public var from:String
    public var to:String
    public var transcript:[LiveAnswerCallbackTranscriptMessage]
    public var startDate:Date
    public var endDate:Date
    public var attachments:[LiveAnswerCallbackAttachment]
    public var completed:String
    public var callRecordingUrl:String

    required public init(){}
}

public class LiveAnswerCallbackTranscriptMessage : Codable
{
    public var date:Date
    public var role:String
    public var senderName:String
    public var targetName:String
    public var functionName:String
    public var functionArgs:String
    public var content:String

    required public init(){}
}

public class LiveAnswerCallbackAttachment : Codable
{
    public var fileName:String
    public var contentType:String
    public var uri:String
    public var data:String

    required public init(){}
}

public class HttpResult : Codable
{
    public var responseText:String
    public var responseStream:Data
    public var fileInfo:FileInfo
    //virtualFile:IVirtualFile ignored. Swift doesn't support interface properties
    public var contentType:String
    public var headers:[String:String]
    public var cookies:[Cookie]
    public var eTag:String
    @TimeSpan public var age:TimeInterval?
    @TimeSpan public var maxAge:TimeInterval?
    public var expires:Date?
    public var lastModified:Date?
    public var cacheControl:CacheControl
    public var resultScope:Func<IDisposable>
    public var allowsPartialResponse:Bool
    public var options:[String:String]
    public var status:Int
    public var statusCode:HttpStatusCode
    public var statusDescription:String
    public var response:String
    //responseFilter:IContentTypeWriter ignored. Swift doesn't support interface properties
    //requestContext:IRequest ignored. Swift doesn't support interface properties
    public var view:String
    public var template:String
    public var paddingLength:Int
    public var isPartialRequest:Bool

    required public init(){}
}

public protocol IVirtualFile
{
    //virtualPathProvider:IVirtualPathProvider ignored. Swift doesn't support interface properties
    var `extension`:String { get set }
    var length:Int { get set }

}

public protocol IVirtualPathProvider
{
    //rootDirectory:IVirtualDirectory ignored. Swift doesn't support interface properties
    var virtualPathSeparator:String { get set }
    var realPathSeparator:String { get set }

}

public protocol IVirtualDirectory
{
}

// @Flags()
public enum CacheControl : Int, Codable
{
    case None = 0
    case Public = 1
    case Private = 2
    case MustRevalidate = 4
    case NoCache = 8
    case NoStore = 16
    case NoTransform = 32
    case ProxyRevalidate = 64
}

public protocol IContentTypeWriter
{
}

public protocol IRequest
{
    var originalRequest:String { get set }
    //response:IResponse ignored. Swift doesn't support interface properties
    var operationName:String { get set }
    var verb:String { get set }
    var requestAttributes:RequestAttributes { get set }
    //requestPreferences:IRequestPreferences ignored. Swift doesn't support interface properties
    var dto:String { get set }
    var contentType:String { get set }
    var isLocal:Bool { get set }
    var userAgent:String { get set }
    var cookies:[String:Cookie] { get set }
    var responseContentType:String { get set }
    var hasExplicitResponseContentType:Bool { get set }
    var items:[String:String] { get set }
    var headers:NameValueCollection { get set }
    var queryString:NameValueCollection { get set }
    var formData:NameValueCollection { get set }
    var useBufferedStream:Bool { get set }
    var rawUrl:String { get set }
    var absoluteUri:String { get set }
    var userHostAddress:String { get set }
    var remoteIp:String { get set }
    var authorization:String { get set }
    var isSecureConnection:Bool { get set }
    var acceptTypes:[String] { get set }
    var pathInfo:String { get set }
    var originalPathInfo:String { get set }
    var inputStream:Data { get set }
    var contentLength:Int { get set }
    var files:[IHttpFile] { get set }
    var urlReferrer:Uri { get set }

}

public protocol IResponse
{
    var originalResponse:String { get set }
    //request:IRequest ignored. Swift doesn't support interface properties
    var statusCode:Int { get set }
    var statusDescription:String { get set }
    var contentType:String { get set }
    var outputStream:Data { get set }
    var dto:String { get set }
    var useBufferedStream:Bool { get set }
    var isClosed:Bool { get set }
    var keepAlive:Bool { get set }
    var hasStarted:Bool { get set }
    var items:[String:String] { get set }

}

// @Flags()
public enum RequestAttributes : Int, Codable
{
    case None = 0
    case Localhost = 1
    case LocalSubnet = 2
    case External = 4
    case Secure = 8
    case InSecure = 16
    case AnySecurityMode = 24
    case HttpHead = 32
    case HttpGet = 64
    case HttpPost = 128
    case HttpPut = 256
    case HttpDelete = 512
    case HttpPatch = 1024
    case HttpOptions = 2048
    case HttpOther = 4096
    case AnyHttpMethod = 8160
    case OneWay = 8192
    case Reply = 16384
    case AnyCallStyle = 24576
    case Soap11 = 32768
    case Soap12 = 65536
    case Xml = 131072
    case Json = 262144
    case Jsv = 524288
    case ProtoBuf = 1048576
    case Csv = 2097152
    case Html = 4194304
    case Jsonl = 8388608
    case MsgPack = 16777216
    case FormatOther = 33554432
    case AnyFormat = 67076096
    case Http = 67108864
    case MessageQueue = 134217728
    case Tcp = 268435456
    case Grpc = 536870912
    case EndpointOther = 1073741824
    case AnyEndpoint = 2080374784
    case InProcess = -2147483648
    case InternalNetworkAccess = -2147483645
    case AnyNetworkAccessType = -2147483641
    case Any = -1
}

public protocol IRequestPreferences
{
    var acceptsBrotli:Bool { get set }
    var acceptsDeflate:Bool { get set }
    var acceptsGzip:Bool { get set }

}

public protocol IHttpFile
{
    var name:String { get set }
    var fileName:String { get set }
    var contentLength:Int { get set }
    var contentType:String { get set }
    var inputStream:Data { get set }

}


Swift LiveAnswerCallback DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /nodes/live-answer/callback HTTP/1.1 
Host: evovoice.io 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<LiveAnswerCallback xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Nodes.AI">
  <AIMinutes>0</AIMinutes>
  <Attachments>
    <LiveAnswerCallbackAttachment>
      <ContentType>String</ContentType>
      <Data>String</Data>
      <FileName>String</FileName>
      <Uri>String</Uri>
    </LiveAnswerCallbackAttachment>
  </Attachments>
  <CallRecordingUrl>String</CallRecordingUrl>
  <ClientId>String</ClientId>
  <Completed>String</Completed>
  <ConversationId>String</ConversationId>
  <EndDate>0001-01-01T00:00:00</EndDate>
  <FlowId>String</FlowId>
  <From>String</From>
  <NodeId>String</NodeId>
  <SessionId>String</SessionId>
  <StartDate>0001-01-01T00:00:00</StartDate>
  <To>String</To>
  <Transcript>
    <LiveAnswerCallbackTranscriptMessage>
      <Content>String</Content>
      <Date>0001-01-01T00:00:00</Date>
      <FunctionArgs>String</FunctionArgs>
      <FunctionName>String</FunctionName>
      <Role>String</Role>
      <SenderName>String</SenderName>
      <TargetName>String</TargetName>
    </LiveAnswerCallbackTranscriptMessage>
  </Transcript>
</LiveAnswerCallback>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<CustomHttpResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.servicestack.net/types" />