消息收发

客服会话过程由一条一条的消息组成,SDK中消息模型由 PDMessage 类表示。 消息包含消息体,消息体由 PDMessageContent 类及其子类表示,不同类别的消息包含相应的消息体对象。

发送消息

常用消息类型的发送可以直接调用 PDBotLibClient 中的封装方法

文字消息
[[PDBotKitClient sharedClient] askQuestion:@"Hello world"];
图片消息
// 生成临时文件
NSString* fileName = [NSString stringWithFormat:@"photo%0.0lf.jpg", [[NSDate date] timeIntervalSince1970]*1000];
NSString* filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
NSData* imageData = UIImageJPEGRepresentation(image, 0.8f);
[imageData writeToFile:filePath atomically:YES];

[[PDBotKitClient sharedClient] askQuestionByImage:[NSURL fileURLWithPath:filePath]];
音频消息
// 生成临时文件
NSString* fileName = [NSString stringWithFormat:@"record%0.0lf.mp3", [[NSDate date] timeIntervalSince1970]*1000];
NSString* filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
NSURL* fileUrl = [NSURL fileURLWithPath:filePath];
[[NSFileManager defaultManager] moveItemAtURL:recordUrl toURL:fileUrl error:nil];

[[PDBotKitClient sharedClient] askQuestionByAudio:fileUrl];

接收消息

接收消息通过实现 PDBotLibClientDelegate 中的代理方法实现。 通过 contentType 属性可以判断消息类型,然后使用相应的消息体类进行解析。


- (void)onAppendMessage:(PDMessage*)message
{
    switch (message.contentType)
    {
        case PDMessageContentTypeText:
            PDMessageContentText* contentText = (PDMessageContentText*)message.content;
            ......
            break;
        case PDMessageContentTypeImage:
            PDMessageContentImage* contentImage = (PDMessageContentImage*)message.content;
            ......
            break;
        case PDMessageContentTypeAudio:
            PDMessageContentAudio* contentAudio = (PDMessageContentAudio*)message.content;
            ......
            break;
        case PDMessageContentTypeMenu:
            PDMessageContentMenu* contentMenu = (PDMessageContentMenu*)message.content;
            ......
            break;
    }
}

results matching ""

    No results matching ""