jenkins启用安全项目_如何通过安全通信启用AI

jenkins启用安全项目

本文是与BlackBerry合作创建的。 感谢您支持使SitePoint成为可能的合作伙伴。

想象一下一个医疗平台,该平台可以根据患者的病史为他们设计完美的治疗计划 。 描绘一个聊天机器人,该机器人会在几分钟内自动产生法律申诉解决客户纠纷

这项技术今天已经存在,这仅仅是开始。 与物联网一起 ,我们正处于第二次革命的边缘。 人工智能将改变一切,从我们保护自己免受网络攻击的方式我们日常生活的方式 。 根据塔塔咨询服务公司(Tata Consultancy Services)的数据, 84%的企业认为,如果不落后于人工智能,人工智能对企业至关重要

打造更智能的企业-人工智能和应用开发

应用程序开发将是迈向人工智能的基础。 将AI集成到其应用程序中的企业将能够提供新服务和更好,更个性化的用户体验 。 他们将能够更深入地了解客户的想法和行为,并通过这些见解打开新的收入来源。

此外,人工智能将推动人,机器和物联网之间新的,变革性的交互。

通过AI驱动的分析,企业将对市场和员工有更深入的了解。 自动化将使员工能够主动响应客户的投诉或安全事件,提高生产率,降低成本,并最大程度地减少员工错误。 通过机器学习,企业将能够做出比以往更好,更明智的决策。

随着时间的流逝,人们将需要这种能力。 预计下一代应用和服务不仅将支持人与人之间的交互,而且还将支持人与机器之间以及机器与机器之间的交互。 正如移动应用对于当今业务成功至关重要一样,人工智能将很快对成功至关重要。

克服企业AI的障碍

尽管大多数企业都承认人工智能的重要性,但人工智能仍然难以捉摸。 问题主要是复杂性和成本之一 。 在Infosys2017年进行的一项研究中 ,有72%的IT专业人员发现时间限制是采用AI的障碍,而71%的人则提到了财务限制。 对变革的抵制和对AI价值缺乏清晰性也是障碍。

即使对于设法克服这些挑战的企业,安全性仍然是核心问题。 AI应用程序将常规处理敏感数据,例如客户信息,内部消息,登录凭证,使用详细信息,甚至是知识产权。 如果不进行加密,此类服务可能会将数据泄漏给错误的人。

通信平台即服务(CPaaS)工具对于克服这些挑战至关重要。 通过将实时通信集成到他们的应用程序中,并将该功能与其AI服务联系在一起,开发人员可以在AI与用户之间进行更好,更深入的交互。 更重要的是,使用正确的CPaaS解决方案,它们可以确保这些交互保持安全,并且AI不会泄漏关键数据。

BBM Enterprise SDK如何使您的应用更智能

这是用于Android,iOS和Web的BBM Enterprise SDK的来源。 一个基于BlackBerry在安全移动消息传递方面的优势的安全CPaaS平台,它为开发人员提供了将安全的企业级消息传递功能集成到其应用程序中所需的一切。 您可以使用常用的身份和用户管理提供程序来简化开发。

更重要的是,它提供了直接支持人工智能的若干功能:

  • 嵌入式语音,视频,聊天。 通过紧急通信,对等协作或通过接收个性化支持服务,使您的用户可以与世界各地的任何人联系并获得他们想要的信息。
  • 发布/订阅服务。 创建向订阅用户广播的频道。 这可以使他们在协作空间中的所有新活动上保持最新状态,无论是其他用户还是应用程序使用的机器可读信息。
  • 聊天机器人和路由服务。 通过聊天机器人为您的用户提供实时支持,该聊天机器人可以处理其数据,活动和消息。 然后,此信息用于将其路由到正确的联系人。
  • AI驱动的预测分析。 AI算法可实现幕后用户授权,并在需要时向用户提供相关信息。 这些包括基于位置的警报或基于用户行为的建议操作。
  • 安全的物联网数据共享。 消除了担心缓存副本或“云中的指纹”可能会损害隐私的担忧,同时还支持跨所有端点(人与机器)的实时数据共享。

我们建议您首先下载免费的SDK,并通过Blackberry的入门指南熟悉BBM Enterprise SDK。

现在您已经准备好,让我们深入研究一些示例,这些示例可以帮助您开始进行AI之旅...

如何通过白板创建数据流

本示例说明了如何在BBM Enterprise SDK聊天中发送任意数据以创建共享白板,使我们可以执行以下操作:

  • 与一个或多个用户创建新的白板
  • 分享图片和标记
  • 清除白板

本示例基于使用Google OpenID Connect的基本设置 。 注意:要使用“白板”示例,您必须完成“ 先决条件”部分中的设置步骤。

先决条件

请访问Android入门部分,以了解最低要求。

要使用此示例,必须设置以下元素:

  • 本地密钥库文件
  • Client_server_id
  • 您的BBM Enterprise SDK用户域。

免费学习PHP!

全面介绍PHP和MySQL,从而实现服务器端编程的飞跃。

原价$ 11.95 您的完全免费

您可以从google-services.json文件中复制这些元素,然后将它们粘贴到app.properties文件中。 这些元素的值如下:

  • client_server_id =“ client_info”:“ client_id”
  • user_domain =“您的用户域”

笔记

  1. Google网络文档包含一个错误:创建OAuth 2.0客户端时,您还必须创建“应用程序类型”设置为Android的OAuth 2.0客户端。 您将需要输入自己的密钥库的SHA来完成客户机ID(请参阅注释2)。 完成后,请记住再次下载google-services.json文件。
  2. 您必须创建自己的签名密钥。 白板示例设置为使用单个签名密钥进行调试和发布。 要创建自己的签名密钥,请访问https://developer.android.com/studio/publish/app-signing.html 。 SHA值是创建移动设备的OAuth 2.0客户端ID所必需的。

已使用gradle 2.14.1构建此应用程序(尚未验证较新版本)

入门

BBM Enterprise SDK不仅可以发送短信,还可以发送更多信息。 BBM Enterprise SDK支持在聊天消息中发送不透明的JSON内容。 本示例发送图片和简单标记以创建共享的白板体验。

发送涂鸦

用户绘制的涂鸦在ChatMessage数据部分中发送 。 为了发送Doodle,我们将位图转换为以64为基数的字符串。 编码后的图像内容,大小和位置将写入JSON对象。 JSON对象在ChatMessageSend中设置。

提示:ChatMessages的最大大小为70KB,请参阅ChatMessageSend#data

首先压缩我们捕获的用户输入的位图,并将其编码为base64字符串。 如果位图的大小仍超出我们的范围,则始终将其压缩为JPEG。

baos = new ByteArrayOutputStream();
Bitmap.CompressFormat format;
if (shrinkCount == 0) {
    format = Bitmap.CompressFormat.PNG;
} else {
    format = Bitmap.CompressFormat.JPEG;
}
bmp.compress(format, imgQuality, baos);

//before doing the base 64 first check the compressed bytes to avoid wasted effort creating larger base 64 copy
if (baos.size() < maxSize) {
    dataBytes = baos.toByteArray();
    dataEnc = Base64.encodeToString(dataBytes, Base64.DEFAULT);
    tooBig = dataEnc.length() > (68 * 1024);
}

创建一个JSON对象,其中包括编码后的图像数据以及画布中的大小和位置。

jsonObject.put(CHAT_MESSAGE_DATA_KEY_DOODLE_PNG_BYTES, dataEnc);
//send the width to allow UI to determine size quicker than loading image
jsonObject.put(CHAT_MESSAGE_DATA_KEY_DOODLE_WIDTH, bmp.getWidth());
jsonObject.put(CHAT_MESSAGE_DATA_KEY_DOODLE_HEIGHT, bmp.getHeight());
if (bmp.getWidth() != startWidth || bmp.getHeight() != startHeight) {
    jsonObject.put(CHAT_MESSAGE_DATA_KEY_SCALE_TO_WIDTH, startWidth);
    jsonObject.put(CHAT_MESSAGE_DATA_KEY_SCALE_TO_HEIGHT, startHeight);
}

//for whiteboard let it know where to position
jsonObject.put(CHAT_MESSAGE_DATA_KEY_DOODLE_LEFT, (int) event.leftMostX);
jsonObject.put(CHAT_MESSAGE_DATA_KEY_DOODLE_TOP, (int) event.highestY);

jsonObject.put(CHAT_MESSAGE_DATA_KEY_DOODLE_AVAILABLE_WIDTH, viewWidth);
jsonObject.put(CHAT_MESSAGE_DATA_KEY_DOODLE_AVAILABLE_HEIGHT, viewHeight);

附加我们创建的JSON数据,并使用自定义标签发送聊天消息。

ChatMessageSend messageSend = new ChatMessageSend(chatId, WhiteboardUtils.CHAT_MESSAGE_TAG_WHITEBOARD);
//Attach our custom data to the chat message
messageSend.data(jsonObject);
BBMEnterprise.getInstance().getBbmdsProtocol().send(messageSend);

WhiteboardActivity.java

填充白板

为了用涂鸦消息填充白板,我们在接收到的聊天消息列表上进行迭代,以反向方式创建绘制列表。 为了避免重画聊天消息,我们会跟踪最后绘制的消息,而只绘制新消息。 如果我们遇到带有标签CHAT_MESSAGE_TAG_CLEAR的消息,我们可以停止,因为清除后将看不到较早的图像。

//build list to display
ArrayList<ChatMessage> toDisplay = new ArrayList<>();
int size = chatMessageList.size();
boolean rememberLastDisplayed = true;
int pendingChatMessages = 0;
//start at last, go until find last displayed or control message
for (int i=size - 1; i >= 0; --i) {
    ObservableValue<ChatMessage> observableChatMessage = chatMessageList.get(i);
    ChatMessage chatMessage = observableChatMessage.get();
    observableChatMessage.addObserver(this);
    if (chatMessage.exists == Existence.MAYBE) {
        rememberLastDisplayed = false;
        ++pendingChatMessages;
        if (pendingChatMessages > 3) {
            //when the chat is first loaded all messages except the last one will be loading
            //if we continue we would process all previous messages, causing them to all load which
            //would display starting to draw recent messages, so stop after a reasonable amount to
            //give the most recent ones a chance to load so we can look for the last reset
            break;
        }
    } else {
        if (Equal.isEqual(chatMessage, mChatMessageListLastDisplayed)) {
            //we already displayed this one, stop
            break;
        } else {
            String tag = chatMessage.tag;
            if (WhiteboardUtils.CHAT_MESSAGE_TAG_WHITEBOARD.equals(tag) || WhiteboardUtils.CHAT_MESSAGE_TAG_PICTURE.equals(tag)) {
                toDisplay.add(chatMessage);
            } else if (WhiteboardUtils.CHAT_MESSAGE_TAG_CLEAR.equals(tag)) {
                toDisplay.add(chatMessage);
                //last one
                break;
            }
            //ignore others
        }
    }
}

WhiteboardView.java

绘制涂鸦或图片需要我们从聊天消息中的base64编码数据中重新创建位图。 消息中包含的大小和位置元数据用于将位图放置在画布中。

if (WhiteboardUtils.CHAT_MESSAGE_TAG_WHITEBOARD.equals(tag) || WhiteboardUtils.CHAT_MESSAGE_TAG_PICTURE.equals(tag)) {
    if (chatMessage.data == null) {
        Logger.w("missing data for ID="+chatMessage.messageId+" tag="+tag+" ");
        continue;
    }

    Bitmap bmp = WhiteboardUtils.createBitmap(chatMessage);

    if (bmp == null) {
        Logger.e("Failed to create bitmap from "+chatMessage);
        continue;
    }

    //figure out if need to scale it
    int remoteWidth = chatMessage.data.optInt(WhiteboardUtils.CHAT_MESSAGE_DATA_KEY_DOODLE_AVAILABLE_WIDTH, -1);
    int remoteHeight = chatMessage.data.optInt(WhiteboardUtils.CHAT_MESSAGE_DATA_KEY_DOODLE_AVAILABLE_HEIGHT, -1);

    Rect toRect;
    float scaleX = 1;
    float scaleY = 1;
    if (remoteWidth > 0 && remoteWidth != w) {
        //remote is different size
        scaleX = (float)w / (float)remoteWidth;
    }
    if (remoteHeight > 0 && remoteHeight != h) {
        //remote is different size
        scaleY = (float)h / (float)remoteHeight;
    }

    int left = chatMessage.data.optInt(WhiteboardUtils.CHAT_MESSAGE_DATA_KEY_DOODLE_LEFT, 0);
    int top = chatMessage.data.optInt(WhiteboardUtils.CHAT_MESSAGE_DATA_KEY_DOODLE_TOP, 0);

    int rectX = (int)(scaleX * left);
    int rectY = (int)(scaleY * top);
    toRect = new Rect(rectX, rectY, rectX + (int)(scaleX * bmp.getWidth()), rectY + (int)(scaleY * bmp.getHeight()));

    canvas.drawBitmap(bmp, null, toRect, null);
}

WhiteboardView.java

清除白板

要清除白板上所有现有的涂鸦,我们会发送另一条带有“ ClearScreen”标签的聊天消息 。 遇到透明标签时,我们将擦拭画布。

} else if (WhiteboardUtils.CHAT_MESSAGE_TAG_CLEAR.equals(tag)) {
    //clear canvas
    int color = Color.WHITE;
    if (chatMessage.data != null) {
        color = chatMessage.data.optInt(WhiteboardUtils.CHAT_MESSAGE_DATA_KEY_BACKGROUND_COLOR, color);
    }

    canvas.drawColor(color);
}

WhiteboardView.java

获取更多示例应用程序

单击此处可访问聊天机器人,丰富聊天,白板,位置共享等示例应用程序,以帮助您构建下一代Android,iOS或JavaScript应用程序。

让我们仔细看看BBM Enterprise SDK

BBM Enterprise SDK为企业和开发人员提供了一个框架,以在其产品或服务(包括Android,iOS,Node.js和Web)中开发实时,端到端的安全消息传递功能。

借助我们的通讯平台,无限的可能性。 借助丰富的下一代技术,它可以为您现在和将来的应用程序提供支持。

针对开发人员的BBM安全消息传递平台

如何确保安全性?

BBM Enterprise SDK的安全模型可确保静态和传输中的数据受到保护,并对即时消息,语音呼叫和视频呼叫进行加密。 只有发件人和预期的收件人可以看到发送的每封邮件,并确保在发件人和收件人之间的传输过程中不会修改邮件。

BBM Enterprise SDK旨在遵循以下三个安全原则:

  • 消息是经过*数字签名的 *,因此您可以确定谁发送了应用程序中的每条消息。
  • 邮件是*加密的 *,因此可以确保只有目标收件人才能阅读邮件。
  • 邮件*经过完整性签名检查 *,因此可以确保邮件在传输过程中不会被修改。

BBM Enterprise SDK使用许多安全密钥:

  • 用户的身份密钥
    • BBM Enterprise SdK的每个用户的公用和专用加密密钥,用于为聊天之外的两个用户之间交换的消息(身份消息)生成加密密钥。
    • BBM Enterprise SDK每个用户的公用和专用签名密钥,用于在发送聊天消息时进行数字签名,并在接收时验证签名。
  • 聊天键
    • 每次聊天的对称加密密钥,用于生成每个消息的加密密钥。

但是您的应用程序可以完全控制安全密钥,以使敏感数据保持私密性。 BlackBerry无法访问您的密钥,您的应用程序将仅在用户之间共享和分发密钥。

BBM密钥管理

用户管理

使用BBM Enterprise SDK,您的应用程序将完全控制发现和管理用户及关系,因为BBM Enterprise SDK中的用户帐户仅代表SDK中的用户。

通过将应用程序帐户与BBM Enterprise SDK帐户相关联,应用程序还可以重用现有的用户帐户和社交网络。

BBM用户数据库

立即将AI集成到您的应用中-免费

人工智能将很快在企业中发挥关键作用。 一旦利用它,现在利用它的企业将享有相当大的竞争优势。 黑莓知道这一点,我们已经准备好帮助您的组织扩展到人工智能,物联网以及其他领域。

有关BBM Enterprise SDK的更多信息, 请单击此处 ,或下载免费的SDK以立即开始构建应用程序。

翻译自: https://www.sitepoint.com/ai-the-future-of-apps/

jenkins启用安全项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值