Статьи

Как включить AI с помощью безопасной связи

Эта статья была создана в сотрудничестве с BlackBerry . Спасибо за поддержку партнеров, которые делают возможным использование SitePoint.

Представьте себе платформу здравоохранения, которая разрабатывает идеальный план лечения для пациента на основе его истории болезни. Представьте себе чат-бота, который автоматически генерирует юридические обращения или разрешает споры с клиентами за считанные минуты.

Эта технология уже существует сегодня, и это только начало. Наряду с « Предприятием вещей» мы находимся на грани второй революции. Искусственный интеллект изменит все: от того , как мы защищаем себя от кибератак, до того, как мы ведем свою повседневную жизнь . И согласно Tata Consultancy Services, 84% предприятий считают, что ИИ будет иметь важное значение для бизнеса, если они не отстают.

Создание умного предприятия — Искусственный интеллект и разработка приложений

Разработка приложений будет основой движения к искусственному интеллекту. Предприятия, которые интегрируют ИИ в свои приложения, смогут предоставлять новые услуги и более персонализированный пользовательский интерфейс . Они смогут глубже понять, как думают и действуют их клиенты, и открыть новые источники дохода с помощью этих идей.

Более того, искусственный интеллект будет стимулировать новые, преобразующие взаимодействия между людьми, машинами и Интернетом вещей.

Благодаря анализу, основанному на ИИ, предприятия получат более глубокое понимание своего рынка и своего персонала. Автоматизация позволит работникам проактивно реагировать на жалобы клиентов или инциденты с безопасностью, повышать производительность, снижать затраты и минимизировать ошибки сотрудников. А благодаря машинному обучению предприятия смогут принимать более взвешенные и обоснованные решения, чем когда-либо прежде.

Со временем люди будут требовать таких возможностей. Ожидается, что приложения и службы следующего поколения будут поддерживать не только взаимодействие между людьми, но и взаимодействие между компьютерами и машинами. Точно так же, как мобильные приложения имеют решающее значение для успеха в бизнесе, искусственный интеллект очень скоро станет важным фактором успеха.

Преодоление препятствий для ИИ предприятия

Хотя большинство предприятий признают важность искусственного интеллекта, ИИ остается неуловимым. Вопрос в первую очередь в сложности и стоимости . В исследовании Infosys , проведенном в 2017 году , 72% ИТ-специалистов обнаружили, что временные ограничения были препятствием для принятия ИИ, в то время как 71% ссылались на финансовые ограничения. Сопротивление переменам и отсутствие ясности в отношении ценности ИИ также были препятствиями.

Даже для предприятий, которым удается преодолеть эти проблемы, безопасность остается основной проблемой. Приложения AI будут регулярно работать с конфиденциальными данными, такими как информация о клиенте, внутренние сообщения, учетные данные для входа, сведения об использовании и даже интеллектуальная собственность. Оставленные незашифрованными, такие сервисы могут утечь эти данные в чужие руки.

Инструменты Коммуникационная платформа как услуга (CPaaS) имеют решающее значение для преодоления этих проблем. Интегрируя коммуникации в режиме реального времени в свои приложения и связывая эту функциональность со своими службами ИИ, разработчики обеспечивают лучшее, более глубокое взаимодействие между ИИ и пользователем. Что еще более важно, с правильным решением CPaaS они гарантируют, что эти взаимодействия поддерживаются в безопасности, и что ИИ не пропускает важные данные.

Как BBM Enterprise SDK делает ваши приложения умнее

Вот где BBM Enterprise SDK подходит для Android, iOS и Web. Безопасная платформа CPaaS, построенная на сильных сторонах BlackBerry в области защищенных мобильных сообщений, дает вашим разработчикам все, что им нужно, чтобы включить в свои приложения функции безопасного обмена сообщениями корпоративного уровня. Вы можете использовать часто используемых провайдеров идентификации и управления пользователями, чтобы сделать разработку еще проще.

Что еще более важно, он предлагает несколько функций, которые напрямую расширяют возможности искусственного интеллекта:

  • Встроенный голос, видео, чат. Предоставьте своим пользователям возможность общаться с кем угодно по всему миру и получать доступ к ним, которые они хотят, будь то для экстренной связи, одноранговой совместной работы или получения персонализированных услуг поддержки.
  • Сервисы публикации / подписки. Создавайте каналы, которые вещают подписавшимся пользователям. Это позволяет им быть в курсе всех новых действий в области совместной работы, будь то от другого пользователя или от машиночитаемой информации, которую использует ваше приложение.
  • Чат-боты и службы маршрутизации. Предоставляйте своим пользователям поддержку в режиме реального времени через чат-бота, который может обрабатывать их данные, действия и сообщения. Эта информация затем используется для направления их на правильный контакт.
  • Прогнозирующая аналитика на основе AI. Алгоритмы искусственного интеллекта обеспечивают скрытое расширение прав и возможностей пользователей, предоставляя пользователям необходимую информацию, когда им это необходимо. К ним относятся оповещения на основе местоположения или предлагаемые действия на основе поведения пользователя.
  • Безопасный обмен данными IoT. Устраните беспокойство по поводу кэшированных копий или «отпечатков пальцев в облаке», которые могут поставить под угрозу конфиденциальность, а также поддерживают обмен данными в режиме реального времени между всеми конечными точками — человеком и машиной.

Мы рекомендуем вам сначала загрузить бесплатный SDK и ознакомиться с BBM Enterprise SDK с Руководством по началу работы Blackberry.

Теперь, когда вы готовы, давайте рассмотрим несколько примеров, которые могут помочь вам начать путешествие с ИИ …

Как создать потоки данных через доску

В этом примере показано, как можно отправлять произвольные данные в чате BBM Enterprise SDK, чтобы создать общую доску, которая позволяет нам выполнять следующие действия:

  • Создавайте новые доски с одним или несколькими пользователями
  • Поделиться фотографиями и разметкой
  • Очистить доску

Этот пример основан на базовой настройке, которая использует Google OpenID Connect. Примечание. Чтобы использовать пример интерактивной доски, необходимо выполнить шаги настройки в разделе « Предварительные условия ».

Предпосылки

Посетите раздел « Начало работы с Android », чтобы ознакомиться с минимальными требованиями.

Чтобы использовать этот пример, вы должны настроить следующие элементы:

  • Файл локального хранилища ключей
  • Client_server_id
  • Ваш пользовательский домен BBM Enterprise SDK.

Вы можете скопировать эти элементы из файла google-services.json и вставить их в файл app.properties. Значения для этих элементов следующие:

  • client_server_id = «client_info»: «client_id»
  • user_domain = ”ваш пользовательский домен”

Примечания

  1. Веб-документация Google содержит ошибку: при создании клиента OAuth 2.0 необходимо также создать клиент OAuth 2.0 с типом приложения, установленным на Android. Вам нужно будет ввести SHA собственного хранилища ключей, чтобы завершить идентификатор клиента (см. Примечание 2). После завершения не забудьте снова загрузить файл google-services.json.
  2. Вы должны создать свой собственный ключ подписи. Пример Whiteboard настроен на использование одного ключа подписи для отладки и выпуска. Чтобы создать свой собственный ключ подписи, посетите страницу https://developer.android.com/studio/publish/app-signing.html . Значение SHA требуется для создания идентификатора клиента OAuth 2.0 для мобильного устройства.

Это приложение было построено с использованием Gradle 2.14.1 (более новые версии не были проверены)

Начиная

BBM Enterprise SDK можно использовать для отправки не только текстовых сообщений. BBM Enterprise SDK поддерживает отправку непрозрачного содержимого JSON в сообщении чата. В этом примере отправляются рисунки и простая разметка для создания общей доски.

Отправка Doodle

Рисунки, нарисованные пользователем, отправляются в разделе данных ChatMessage . Чтобы отправить рисунок, мы преобразуем растровое изображение в строку, закодированную в формате 64. Содержимое, размер и положение закодированного изображения записываются в объект JSON. Объект JSON устанавливается в ChatMessageSend .

Совет: Размер сообщения ChatMessage может достигать 70 КБ, см. Раздел ChatMessageSend # data

Сначала сожмите растровое изображение, захваченное пользователем, и закодируйте его как строку base64. Растровое изображение всегда сначала сжимается как PNG, если размер все еще находится за пределами наших границ, оно сжимается как 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

Создайте ИИ в свое приложение сегодня — бесплатно

Искусственный интеллект скоро будет играть решающую роль на предприятии. Компании, которые используют его сейчас, получат значительное конкурентное преимущество, когда оно станет более распространенным. BlackBerry знает это — и мы готовы помочь вашей организации перейти к искусственному интеллекту, объединению вещей и тому, что находится за их пределами.

Для получения дополнительной информации о BBM Enterprise SDK нажмите здесь или загрузите бесплатный SDK, чтобы сразу приступить к созданию приложений.