ibm_watson 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/README.md +258 -0
 - data/bin/console +14 -0
 - data/bin/setup +8 -0
 - data/lib/ibm_watson.rb +16 -0
 - data/lib/ibm_watson/assistant_v1.rb +1997 -0
 - data/lib/ibm_watson/detailed_response.rb +21 -0
 - data/lib/ibm_watson/discovery_v1.rb +2039 -0
 - data/lib/ibm_watson/iam_token_manager.rb +166 -0
 - data/lib/ibm_watson/language_translator_v3.rb +411 -0
 - data/lib/ibm_watson/natural_language_classifier_v1.rb +309 -0
 - data/lib/ibm_watson/natural_language_understanding_v1.rb +297 -0
 - data/lib/ibm_watson/personality_insights_v3.rb +260 -0
 - data/lib/ibm_watson/speech_to_text_v1.rb +2153 -0
 - data/lib/ibm_watson/text_to_speech_v1.rb +716 -0
 - data/lib/ibm_watson/tone_analyzer_v3.rb +287 -0
 - data/lib/ibm_watson/version.rb +3 -0
 - data/lib/ibm_watson/visual_recognition_v3.rb +579 -0
 - data/lib/ibm_watson/watson_api_exception.rb +41 -0
 - data/lib/ibm_watson/watson_service.rb +180 -0
 - data/lib/ibm_watson/websocket/recognize_callback.rb +32 -0
 - data/lib/ibm_watson/websocket/speech_to_text_websocket_listener.rb +162 -0
 - data/rakefile +45 -0
 - data/test/integration/test_assistant_v1.rb +645 -0
 - data/test/integration/test_discovery_v1.rb +200 -0
 - data/test/integration/test_iam_assistant_v1.rb +707 -0
 - data/test/integration/test_language_translator_v3.rb +81 -0
 - data/test/integration/test_natural_language_classifier_v1.rb +69 -0
 - data/test/integration/test_natural_language_understanding_v1.rb +98 -0
 - data/test/integration/test_personality_insights_v3.rb +95 -0
 - data/test/integration/test_speech_to_text_v1.rb +187 -0
 - data/test/integration/test_text_to_speech_v1.rb +81 -0
 - data/test/integration/test_tone_analyzer_v3.rb +72 -0
 - data/test/integration/test_visual_recognition_v3.rb +64 -0
 - data/test/test_helper.rb +22 -0
 - data/test/unit/test_assistant_v1.rb +1598 -0
 - data/test/unit/test_discovery_v1.rb +1144 -0
 - data/test/unit/test_iam_token_manager.rb +165 -0
 - data/test/unit/test_language_translator_v3.rb +461 -0
 - data/test/unit/test_natural_language_classifier_v1.rb +187 -0
 - data/test/unit/test_natural_language_understanding_v1.rb +132 -0
 - data/test/unit/test_personality_insights_v3.rb +172 -0
 - data/test/unit/test_speech_to_text_v1.rb +755 -0
 - data/test/unit/test_text_to_speech_v1.rb +336 -0
 - data/test/unit/test_tone_analyzer_v3.rb +200 -0
 - data/test/unit/test_vcap_using_personality_insights.rb +150 -0
 - data/test/unit/test_visual_recognition_v3.rb +345 -0
 - metadata +302 -0
 
| 
         @@ -0,0 +1,81 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require("json")
         
     | 
| 
      
 4 
     | 
    
         
            +
            require_relative("./../test_helper.rb")
         
     | 
| 
      
 5 
     | 
    
         
            +
            require("minitest/hooks/test")
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            # Integration tests for the Language Translator V3 Service
         
     | 
| 
      
 8 
     | 
    
         
            +
            class LanguageTranslatorV3Test < Minitest::Test
         
     | 
| 
      
 9 
     | 
    
         
            +
              include Minitest::Hooks
         
     | 
| 
      
 10 
     | 
    
         
            +
              attr_accessor :service
         
     | 
| 
      
 11 
     | 
    
         
            +
              def before_all
         
     | 
| 
      
 12 
     | 
    
         
            +
                @service = IBMWatson::LanguageTranslatorV3.new(
         
     | 
| 
      
 13 
     | 
    
         
            +
                  username: ENV["LANGUAGE_TRANSLATOR_V3_USERNAME"],
         
     | 
| 
      
 14 
     | 
    
         
            +
                  password: ENV["LANGUAGE_TRANSLATOR_V3_PASSWORD"],
         
     | 
| 
      
 15 
     | 
    
         
            +
                  version: "2018-05-01"
         
     | 
| 
      
 16 
     | 
    
         
            +
                )
         
     | 
| 
      
 17 
     | 
    
         
            +
                @service.add_default_headers(
         
     | 
| 
      
 18 
     | 
    
         
            +
                  headers: {
         
     | 
| 
      
 19 
     | 
    
         
            +
                    "X-Watson-Learning-Opt-Out" => "1",
         
     | 
| 
      
 20 
     | 
    
         
            +
                    "X-Watson-Test" => "1"
         
     | 
| 
      
 21 
     | 
    
         
            +
                  }
         
     | 
| 
      
 22 
     | 
    
         
            +
                )
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def test_get_model
         
     | 
| 
      
 26 
     | 
    
         
            +
                service_response = service.get_model(
         
     | 
| 
      
 27 
     | 
    
         
            +
                  model_id: "en-it"
         
     | 
| 
      
 28 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 29 
     | 
    
         
            +
                refute(service_response.nil?)
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              def test_list_models
         
     | 
| 
      
 33 
     | 
    
         
            +
                service_response = service.list_models.result
         
     | 
| 
      
 34 
     | 
    
         
            +
                refute(service_response.nil?)
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              def test_translate_source_target
         
     | 
| 
      
 38 
     | 
    
         
            +
                service_response = service.translate(
         
     | 
| 
      
 39 
     | 
    
         
            +
                  text: "Hola, cómo estás? €",
         
     | 
| 
      
 40 
     | 
    
         
            +
                  source: "es",
         
     | 
| 
      
 41 
     | 
    
         
            +
                  target: "en"
         
     | 
| 
      
 42 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 43 
     | 
    
         
            +
                refute(service_response.nil?)
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              def test_translate_model_id
         
     | 
| 
      
 47 
     | 
    
         
            +
                service_response = service.translate(
         
     | 
| 
      
 48 
     | 
    
         
            +
                  text: "Messi is the best ever",
         
     | 
| 
      
 49 
     | 
    
         
            +
                  model_id: "en-es"
         
     | 
| 
      
 50 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 51 
     | 
    
         
            +
                refute(service_response.nil?)
         
     | 
| 
      
 52 
     | 
    
         
            +
              end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
              def test_identify
         
     | 
| 
      
 55 
     | 
    
         
            +
                service_response = service.identify(
         
     | 
| 
      
 56 
     | 
    
         
            +
                  text: "祝你有美好的一天"
         
     | 
| 
      
 57 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 58 
     | 
    
         
            +
                refute(service_response.nil?)
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              def test_list_identifiable_languages
         
     | 
| 
      
 62 
     | 
    
         
            +
                service_response = service.list_identifiable_languages.result
         
     | 
| 
      
 63 
     | 
    
         
            +
                refute(service_response.nil?)
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
              def test_create_delete_model
         
     | 
| 
      
 67 
     | 
    
         
            +
                skip "Methods not available in lite plans"
         
     | 
| 
      
 68 
     | 
    
         
            +
                custom_model = File.open(Dir.getwd + "/resources/language_translator_model.tmx")
         
     | 
| 
      
 69 
     | 
    
         
            +
                service_response = service.create_model(
         
     | 
| 
      
 70 
     | 
    
         
            +
                  base_model_id: "en-fr",
         
     | 
| 
      
 71 
     | 
    
         
            +
                  name: "test_glossary_ruby_integration",
         
     | 
| 
      
 72 
     | 
    
         
            +
                  forced_glossary: custom_model
         
     | 
| 
      
 73 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 74 
     | 
    
         
            +
                refute(service_response.nil?)
         
     | 
| 
      
 75 
     | 
    
         
            +
                model_id = service_response["model_id"]
         
     | 
| 
      
 76 
     | 
    
         
            +
                service_response = service.delete_model(
         
     | 
| 
      
 77 
     | 
    
         
            +
                  model_id: model_id
         
     | 
| 
      
 78 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 79 
     | 
    
         
            +
                assert_equal("OK", service_response["status"])
         
     | 
| 
      
 80 
     | 
    
         
            +
              end
         
     | 
| 
      
 81 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,69 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require("json")
         
     | 
| 
      
 4 
     | 
    
         
            +
            require_relative("./../test_helper.rb")
         
     | 
| 
      
 5 
     | 
    
         
            +
            require("minitest/hooks/test")
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            # Integration tests for the Natural Language Classifier V1 Service
         
     | 
| 
      
 8 
     | 
    
         
            +
            class NaturalLanguageClassifierV1Test < Minitest::Test
         
     | 
| 
      
 9 
     | 
    
         
            +
              include Minitest::Hooks
         
     | 
| 
      
 10 
     | 
    
         
            +
              attr_accessor :service
         
     | 
| 
      
 11 
     | 
    
         
            +
              def before_all
         
     | 
| 
      
 12 
     | 
    
         
            +
                @service = IBMWatson::NaturalLanguageClassifierV1.new(
         
     | 
| 
      
 13 
     | 
    
         
            +
                  username: ENV["NATURAL_LANGUAGE_CLASSIFIER_USERNAME"],
         
     | 
| 
      
 14 
     | 
    
         
            +
                  password: ENV["NATURAL_LANGUAGE_CLASSIFIER_PASSWORD"]
         
     | 
| 
      
 15 
     | 
    
         
            +
                )
         
     | 
| 
      
 16 
     | 
    
         
            +
                @service.add_default_headers(
         
     | 
| 
      
 17 
     | 
    
         
            +
                  headers: {
         
     | 
| 
      
 18 
     | 
    
         
            +
                    "X-Watson-Learning-Opt-Out" => "1",
         
     | 
| 
      
 19 
     | 
    
         
            +
                    "X-Watson-Test" => "1"
         
     | 
| 
      
 20 
     | 
    
         
            +
                  }
         
     | 
| 
      
 21 
     | 
    
         
            +
                )
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              def test_list_classifier
         
     | 
| 
      
 25 
     | 
    
         
            +
                list_classifiers = @service.list_classifiers.result
         
     | 
| 
      
 26 
     | 
    
         
            +
                refute(list_classifiers.nil?)
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              def test_classify_text
         
     | 
| 
      
 30 
     | 
    
         
            +
                skip "The classifier takes more than a minute"
         
     | 
| 
      
 31 
     | 
    
         
            +
                training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
         
     | 
| 
      
 32 
     | 
    
         
            +
                metadata = { "name" => "my-classifier", "language" => "en" }
         
     | 
| 
      
 33 
     | 
    
         
            +
                status = nil
         
     | 
| 
      
 34 
     | 
    
         
            +
                classifier = @service.create_classifier(
         
     | 
| 
      
 35 
     | 
    
         
            +
                  metadata: metadata,
         
     | 
| 
      
 36 
     | 
    
         
            +
                  training_data: training_data
         
     | 
| 
      
 37 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 38 
     | 
    
         
            +
                classifier_id = classifier["classifier_id"]
         
     | 
| 
      
 39 
     | 
    
         
            +
                iterations = 0
         
     | 
| 
      
 40 
     | 
    
         
            +
                while iterations < 15
         
     | 
| 
      
 41 
     | 
    
         
            +
                  status = @service.get_classifier(classifier_id: classifier_id)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  iterations += 1
         
     | 
| 
      
 43 
     | 
    
         
            +
                  sleep(5) unless status["status"] == "Available"
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
                unless status["status"] == "Available"
         
     | 
| 
      
 46 
     | 
    
         
            +
                  @service.delete_classifier(
         
     | 
| 
      
 47 
     | 
    
         
            +
                    classifier_id: classifier_id
         
     | 
| 
      
 48 
     | 
    
         
            +
                  )
         
     | 
| 
      
 49 
     | 
    
         
            +
                  assert(false, msg: "Classifier is not available")
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                classes = @service.classify(
         
     | 
| 
      
 53 
     | 
    
         
            +
                  classifier_id: classifier_id,
         
     | 
| 
      
 54 
     | 
    
         
            +
                  text: "How hot will it be tomorrow?"
         
     | 
| 
      
 55 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 56 
     | 
    
         
            +
                refute(classes.nil?)
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                collection = [{ "text" => "How hot will it be today?" }, { "text" => "Is it hot outside?" }]
         
     | 
| 
      
 59 
     | 
    
         
            +
                classes = @service.classify_collection(
         
     | 
| 
      
 60 
     | 
    
         
            +
                  classifier_id: classifier_id,
         
     | 
| 
      
 61 
     | 
    
         
            +
                  collection: collection
         
     | 
| 
      
 62 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 63 
     | 
    
         
            +
                refute(classes.nil?)
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                @service.delete_classifier(
         
     | 
| 
      
 66 
     | 
    
         
            +
                  classifier_id: classifier_id
         
     | 
| 
      
 67 
     | 
    
         
            +
                )
         
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,98 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require("json")
         
     | 
| 
      
 4 
     | 
    
         
            +
            require_relative("./../test_helper.rb")
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            # Integration tests for the Natural Language Understanding V1 Service
         
     | 
| 
      
 7 
     | 
    
         
            +
            class NaturalLanguageUnderstandingV1Test < Minitest::Test
         
     | 
| 
      
 8 
     | 
    
         
            +
              def test_text_analyze
         
     | 
| 
      
 9 
     | 
    
         
            +
                service = IBMWatson::NaturalLanguageUnderstandingV1.new(
         
     | 
| 
      
 10 
     | 
    
         
            +
                  version: "2018-03-16",
         
     | 
| 
      
 11 
     | 
    
         
            +
                  username: ENV["NATURAL_LANGUAGE_UNDERSTANDING_USERNAME"],
         
     | 
| 
      
 12 
     | 
    
         
            +
                  password: ENV["NATURAL_LANGUAGE_UNDERSTANDING_PASSWORD"]
         
     | 
| 
      
 13 
     | 
    
         
            +
                )
         
     | 
| 
      
 14 
     | 
    
         
            +
                service.add_default_headers(
         
     | 
| 
      
 15 
     | 
    
         
            +
                  headers: {
         
     | 
| 
      
 16 
     | 
    
         
            +
                    "X-Watson-Learning-Opt-Out" => "1",
         
     | 
| 
      
 17 
     | 
    
         
            +
                    "X-Watson-Test" => "1"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  }
         
     | 
| 
      
 19 
     | 
    
         
            +
                )
         
     | 
| 
      
 20 
     | 
    
         
            +
                text = "IBM is an American multinational technology company "
         
     | 
| 
      
 21 
     | 
    
         
            +
                text += "headquartered in Armonk, New York, United States, "
         
     | 
| 
      
 22 
     | 
    
         
            +
                text += "with operations in over 170 countries."
         
     | 
| 
      
 23 
     | 
    
         
            +
                service_response = service.analyze(
         
     | 
| 
      
 24 
     | 
    
         
            +
                  features: {
         
     | 
| 
      
 25 
     | 
    
         
            +
                    entities: {
         
     | 
| 
      
 26 
     | 
    
         
            +
                      emotion: true,
         
     | 
| 
      
 27 
     | 
    
         
            +
                      sentiment: true,
         
     | 
| 
      
 28 
     | 
    
         
            +
                      limit: 2
         
     | 
| 
      
 29 
     | 
    
         
            +
                    },
         
     | 
| 
      
 30 
     | 
    
         
            +
                    keywords: {
         
     | 
| 
      
 31 
     | 
    
         
            +
                      emotion: true,
         
     | 
| 
      
 32 
     | 
    
         
            +
                      sentiment: true,
         
     | 
| 
      
 33 
     | 
    
         
            +
                      limit: 2
         
     | 
| 
      
 34 
     | 
    
         
            +
                    }
         
     | 
| 
      
 35 
     | 
    
         
            +
                  },
         
     | 
| 
      
 36 
     | 
    
         
            +
                  text: text
         
     | 
| 
      
 37 
     | 
    
         
            +
                )
         
     | 
| 
      
 38 
     | 
    
         
            +
                assert((200..299).cover?(service_response.status))
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              def test_html_analyze
         
     | 
| 
      
 42 
     | 
    
         
            +
                service = IBMWatson::NaturalLanguageUnderstandingV1.new(
         
     | 
| 
      
 43 
     | 
    
         
            +
                  version: "2018-03-16",
         
     | 
| 
      
 44 
     | 
    
         
            +
                  username: ENV["NATURAL_LANGUAGE_UNDERSTANDING_USERNAME"],
         
     | 
| 
      
 45 
     | 
    
         
            +
                  password: ENV["NATURAL_LANGUAGE_UNDERSTANDING_PASSWORD"]
         
     | 
| 
      
 46 
     | 
    
         
            +
                )
         
     | 
| 
      
 47 
     | 
    
         
            +
                service.add_default_headers(
         
     | 
| 
      
 48 
     | 
    
         
            +
                  headers: {
         
     | 
| 
      
 49 
     | 
    
         
            +
                    "X-Watson-Learning-Opt-Out" => "1",
         
     | 
| 
      
 50 
     | 
    
         
            +
                    "X-Watson-Test" => "1"
         
     | 
| 
      
 51 
     | 
    
         
            +
                  }
         
     | 
| 
      
 52 
     | 
    
         
            +
                )
         
     | 
| 
      
 53 
     | 
    
         
            +
                service_response = service.analyze(
         
     | 
| 
      
 54 
     | 
    
         
            +
                  features: {
         
     | 
| 
      
 55 
     | 
    
         
            +
                    sentiment: {}
         
     | 
| 
      
 56 
     | 
    
         
            +
                  },
         
     | 
| 
      
 57 
     | 
    
         
            +
                  html: "<span>hello this is a test </span>"
         
     | 
| 
      
 58 
     | 
    
         
            +
                )
         
     | 
| 
      
 59 
     | 
    
         
            +
                assert((200..299).cover?(service_response.status))
         
     | 
| 
      
 60 
     | 
    
         
            +
              end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              def test_url_analyze
         
     | 
| 
      
 63 
     | 
    
         
            +
                service = IBMWatson::NaturalLanguageUnderstandingV1.new(
         
     | 
| 
      
 64 
     | 
    
         
            +
                  version: "2018-03-16",
         
     | 
| 
      
 65 
     | 
    
         
            +
                  username: ENV["NATURAL_LANGUAGE_UNDERSTANDING_USERNAME"],
         
     | 
| 
      
 66 
     | 
    
         
            +
                  password: ENV["NATURAL_LANGUAGE_UNDERSTANDING_PASSWORD"]
         
     | 
| 
      
 67 
     | 
    
         
            +
                )
         
     | 
| 
      
 68 
     | 
    
         
            +
                service.add_default_headers(
         
     | 
| 
      
 69 
     | 
    
         
            +
                  headers: {
         
     | 
| 
      
 70 
     | 
    
         
            +
                    "X-Watson-Learning-Opt-Out" => "1",
         
     | 
| 
      
 71 
     | 
    
         
            +
                    "X-Watson-Test" => "1"
         
     | 
| 
      
 72 
     | 
    
         
            +
                  }
         
     | 
| 
      
 73 
     | 
    
         
            +
                )
         
     | 
| 
      
 74 
     | 
    
         
            +
                service_response = service.analyze(
         
     | 
| 
      
 75 
     | 
    
         
            +
                  features: {
         
     | 
| 
      
 76 
     | 
    
         
            +
                    categories: {}
         
     | 
| 
      
 77 
     | 
    
         
            +
                  },
         
     | 
| 
      
 78 
     | 
    
         
            +
                  url: "www.ibm.com"
         
     | 
| 
      
 79 
     | 
    
         
            +
                )
         
     | 
| 
      
 80 
     | 
    
         
            +
                assert((200..299).cover?(service_response.status))
         
     | 
| 
      
 81 
     | 
    
         
            +
              end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
              def test_list_models
         
     | 
| 
      
 84 
     | 
    
         
            +
                service = IBMWatson::NaturalLanguageUnderstandingV1.new(
         
     | 
| 
      
 85 
     | 
    
         
            +
                  version: "2018-03-16",
         
     | 
| 
      
 86 
     | 
    
         
            +
                  username: ENV["NATURAL_LANGUAGE_UNDERSTANDING_USERNAME"],
         
     | 
| 
      
 87 
     | 
    
         
            +
                  password: ENV["NATURAL_LANGUAGE_UNDERSTANDING_PASSWORD"]
         
     | 
| 
      
 88 
     | 
    
         
            +
                )
         
     | 
| 
      
 89 
     | 
    
         
            +
                service.add_default_headers(
         
     | 
| 
      
 90 
     | 
    
         
            +
                  headers: {
         
     | 
| 
      
 91 
     | 
    
         
            +
                    "X-Watson-Learning-Opt-Out" => "1",
         
     | 
| 
      
 92 
     | 
    
         
            +
                    "X-Watson-Test" => "1"
         
     | 
| 
      
 93 
     | 
    
         
            +
                  }
         
     | 
| 
      
 94 
     | 
    
         
            +
                )
         
     | 
| 
      
 95 
     | 
    
         
            +
                service_response = service.list_models
         
     | 
| 
      
 96 
     | 
    
         
            +
                assert((200..299).cover?(service_response.status))
         
     | 
| 
      
 97 
     | 
    
         
            +
              end
         
     | 
| 
      
 98 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,95 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require("json")
         
     | 
| 
      
 4 
     | 
    
         
            +
            require_relative("./../test_helper.rb")
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            # Integration tests for the Personality Insights V3 Service
         
     | 
| 
      
 7 
     | 
    
         
            +
            class PersonalityInsightsV3Test < Minitest::Test
         
     | 
| 
      
 8 
     | 
    
         
            +
              def test_plain_to_json
         
     | 
| 
      
 9 
     | 
    
         
            +
                personality_text = File.read(Dir.getwd + "/resources/personality-v3.txt")
         
     | 
| 
      
 10 
     | 
    
         
            +
                service = IBMWatson::PersonalityInsightsV3.new(
         
     | 
| 
      
 11 
     | 
    
         
            +
                  version: "2017-10-13",
         
     | 
| 
      
 12 
     | 
    
         
            +
                  username: ENV["PERSONALITY_INSIGHTS_USERNAME"],
         
     | 
| 
      
 13 
     | 
    
         
            +
                  password: ENV["PERSONALITY_INSIGHTS_PASSWORD"]
         
     | 
| 
      
 14 
     | 
    
         
            +
                )
         
     | 
| 
      
 15 
     | 
    
         
            +
                service.add_default_headers(
         
     | 
| 
      
 16 
     | 
    
         
            +
                  headers: {
         
     | 
| 
      
 17 
     | 
    
         
            +
                    "X-Watson-Learning-Opt-Out" => "1",
         
     | 
| 
      
 18 
     | 
    
         
            +
                    "X-Watson-Test" => "1"
         
     | 
| 
      
 19 
     | 
    
         
            +
                  }
         
     | 
| 
      
 20 
     | 
    
         
            +
                )
         
     | 
| 
      
 21 
     | 
    
         
            +
                service_response = service.profile(
         
     | 
| 
      
 22 
     | 
    
         
            +
                  content: personality_text,
         
     | 
| 
      
 23 
     | 
    
         
            +
                  content_type: "text/plain;charset=utf-8"
         
     | 
| 
      
 24 
     | 
    
         
            +
                )
         
     | 
| 
      
 25 
     | 
    
         
            +
                assert((200..299).cover?(service_response.status))
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              def test_json_to_json
         
     | 
| 
      
 29 
     | 
    
         
            +
                personality_text = File.read(Dir.getwd + "/resources/personality-v3.json")
         
     | 
| 
      
 30 
     | 
    
         
            +
                service = IBMWatson::PersonalityInsightsV3.new(
         
     | 
| 
      
 31 
     | 
    
         
            +
                  version: "2017-10-13",
         
     | 
| 
      
 32 
     | 
    
         
            +
                  username: ENV["PERSONALITY_INSIGHTS_USERNAME"],
         
     | 
| 
      
 33 
     | 
    
         
            +
                  password: ENV["PERSONALITY_INSIGHTS_PASSWORD"]
         
     | 
| 
      
 34 
     | 
    
         
            +
                )
         
     | 
| 
      
 35 
     | 
    
         
            +
                service.add_default_headers(
         
     | 
| 
      
 36 
     | 
    
         
            +
                  headers: {
         
     | 
| 
      
 37 
     | 
    
         
            +
                    "X-Watson-Learning-Opt-Out" => "1",
         
     | 
| 
      
 38 
     | 
    
         
            +
                    "X-Watson-Test" => "1"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  }
         
     | 
| 
      
 40 
     | 
    
         
            +
                )
         
     | 
| 
      
 41 
     | 
    
         
            +
                service_response = service.profile(
         
     | 
| 
      
 42 
     | 
    
         
            +
                  content: personality_text,
         
     | 
| 
      
 43 
     | 
    
         
            +
                  content_type: "application/json",
         
     | 
| 
      
 44 
     | 
    
         
            +
                  raw_scores: true,
         
     | 
| 
      
 45 
     | 
    
         
            +
                  consumption_preferences: true
         
     | 
| 
      
 46 
     | 
    
         
            +
                )
         
     | 
| 
      
 47 
     | 
    
         
            +
                assert((200..299).cover?(service_response.status))
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              def test_json_to_csv
         
     | 
| 
      
 51 
     | 
    
         
            +
                personality_text = File.read(Dir.getwd + "/resources/personality-v3.json")
         
     | 
| 
      
 52 
     | 
    
         
            +
                service = IBMWatson::PersonalityInsightsV3.new(
         
     | 
| 
      
 53 
     | 
    
         
            +
                  version: "2017-10-13",
         
     | 
| 
      
 54 
     | 
    
         
            +
                  username: ENV["PERSONALITY_INSIGHTS_USERNAME"],
         
     | 
| 
      
 55 
     | 
    
         
            +
                  password: ENV["PERSONALITY_INSIGHTS_PASSWORD"]
         
     | 
| 
      
 56 
     | 
    
         
            +
                )
         
     | 
| 
      
 57 
     | 
    
         
            +
                service.add_default_headers(
         
     | 
| 
      
 58 
     | 
    
         
            +
                  headers: {
         
     | 
| 
      
 59 
     | 
    
         
            +
                    "X-Watson-Learning-Opt-Out" => "1",
         
     | 
| 
      
 60 
     | 
    
         
            +
                    "X-Watson-Test" => "1"
         
     | 
| 
      
 61 
     | 
    
         
            +
                  }
         
     | 
| 
      
 62 
     | 
    
         
            +
                )
         
     | 
| 
      
 63 
     | 
    
         
            +
                service_response = service.profile(
         
     | 
| 
      
 64 
     | 
    
         
            +
                  content: personality_text,
         
     | 
| 
      
 65 
     | 
    
         
            +
                  content_type: "application/json",
         
     | 
| 
      
 66 
     | 
    
         
            +
                  accept: "text/csv",
         
     | 
| 
      
 67 
     | 
    
         
            +
                  csv_headers: true,
         
     | 
| 
      
 68 
     | 
    
         
            +
                  raw_scores: true,
         
     | 
| 
      
 69 
     | 
    
         
            +
                  consumption_preferences: true
         
     | 
| 
      
 70 
     | 
    
         
            +
                )
         
     | 
| 
      
 71 
     | 
    
         
            +
                assert((200..299).cover?(service_response.status))
         
     | 
| 
      
 72 
     | 
    
         
            +
              end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
              def test_plain_to_json_es
         
     | 
| 
      
 75 
     | 
    
         
            +
                personality_text = File.read(Dir.getwd + "/resources/personality-v3-es.txt")
         
     | 
| 
      
 76 
     | 
    
         
            +
                service = IBMWatson::PersonalityInsightsV3.new(
         
     | 
| 
      
 77 
     | 
    
         
            +
                  version: "2017-10-13",
         
     | 
| 
      
 78 
     | 
    
         
            +
                  username: ENV["PERSONALITY_INSIGHTS_USERNAME"],
         
     | 
| 
      
 79 
     | 
    
         
            +
                  password: ENV["PERSONALITY_INSIGHTS_PASSWORD"]
         
     | 
| 
      
 80 
     | 
    
         
            +
                )
         
     | 
| 
      
 81 
     | 
    
         
            +
                service.add_default_headers(
         
     | 
| 
      
 82 
     | 
    
         
            +
                  headers: {
         
     | 
| 
      
 83 
     | 
    
         
            +
                    "X-Watson-Learning-Opt-Out" => "1",
         
     | 
| 
      
 84 
     | 
    
         
            +
                    "X-Watson-Test" => "1"
         
     | 
| 
      
 85 
     | 
    
         
            +
                  }
         
     | 
| 
      
 86 
     | 
    
         
            +
                )
         
     | 
| 
      
 87 
     | 
    
         
            +
                service_response = service.profile(
         
     | 
| 
      
 88 
     | 
    
         
            +
                  content: personality_text,
         
     | 
| 
      
 89 
     | 
    
         
            +
                  content_type: "text/plain;charset=utf-8",
         
     | 
| 
      
 90 
     | 
    
         
            +
                  content_language: "es",
         
     | 
| 
      
 91 
     | 
    
         
            +
                  accept_language: "es"
         
     | 
| 
      
 92 
     | 
    
         
            +
                )
         
     | 
| 
      
 93 
     | 
    
         
            +
                assert((200..299).cover?(service_response.status))
         
     | 
| 
      
 94 
     | 
    
         
            +
              end
         
     | 
| 
      
 95 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,187 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require_relative("./../test_helper.rb")
         
     | 
| 
      
 4 
     | 
    
         
            +
            require_relative("./../../lib/ibm_watson/websocket/recognize_callback.rb")
         
     | 
| 
      
 5 
     | 
    
         
            +
            require_relative("./../../lib/ibm_watson/websocket/speech_to_text_websocket_listener.rb")
         
     | 
| 
      
 6 
     | 
    
         
            +
            require("minitest/hooks/test")
         
     | 
| 
      
 7 
     | 
    
         
            +
            require("concurrent")
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            # Recognize Callback class
         
     | 
| 
      
 10 
     | 
    
         
            +
            class MyRecognizeCallback < IBMWatson::RecognizeCallback
         
     | 
| 
      
 11 
     | 
    
         
            +
              def initialize(atomic_boolean: nil)
         
     | 
| 
      
 12 
     | 
    
         
            +
                super
         
     | 
| 
      
 13 
     | 
    
         
            +
                @atomic_boolean = atomic_boolean
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              def on_error(error:)
         
     | 
| 
      
 17 
     | 
    
         
            +
                puts "Error received: #{error}"
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              def on_inactivity_timeout(*)
         
     | 
| 
      
 21 
     | 
    
         
            +
                @atomic_boolean.make_true
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            # Integration tests for the Speech to Text V1 Service
         
     | 
| 
      
 26 
     | 
    
         
            +
            class SpeechToTextV1Test < Minitest::Test
         
     | 
| 
      
 27 
     | 
    
         
            +
              include Minitest::Hooks
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              attr_accessor :service
         
     | 
| 
      
 30 
     | 
    
         
            +
              def before_all
         
     | 
| 
      
 31 
     | 
    
         
            +
                @service = IBMWatson::SpeechToTextV1.new(
         
     | 
| 
      
 32 
     | 
    
         
            +
                  username: ENV["SPEECH_TO_TEXT_USERNAME"],
         
     | 
| 
      
 33 
     | 
    
         
            +
                  password: ENV["SPEECH_TO_TEXT_PASSWORD"]
         
     | 
| 
      
 34 
     | 
    
         
            +
                )
         
     | 
| 
      
 35 
     | 
    
         
            +
                @service.add_default_headers(
         
     | 
| 
      
 36 
     | 
    
         
            +
                  headers: {
         
     | 
| 
      
 37 
     | 
    
         
            +
                    "X-Watson-Learning-Opt-Out" => "1",
         
     | 
| 
      
 38 
     | 
    
         
            +
                    "X-Watson-Test" => "1"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  }
         
     | 
| 
      
 40 
     | 
    
         
            +
                )
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              def test_models
         
     | 
| 
      
 44 
     | 
    
         
            +
                output = @service.list_models.result
         
     | 
| 
      
 45 
     | 
    
         
            +
                refute_nil(output)
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                model = @service.get_model(
         
     | 
| 
      
 48 
     | 
    
         
            +
                  model_id: "ko-KR_BroadbandModel"
         
     | 
| 
      
 49 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 50 
     | 
    
         
            +
                model = model
         
     | 
| 
      
 51 
     | 
    
         
            +
                refute_nil(model)
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                begin
         
     | 
| 
      
 54 
     | 
    
         
            +
                  @service.get_model(
         
     | 
| 
      
 55 
     | 
    
         
            +
                    model_id: "bogus"
         
     | 
| 
      
 56 
     | 
    
         
            +
                  )
         
     | 
| 
      
 57 
     | 
    
         
            +
                rescue StandardError => e
         
     | 
| 
      
 58 
     | 
    
         
            +
                  refute_nil(e.global_transaction_id)
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
              end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              def test_recognize_await
         
     | 
| 
      
 63 
     | 
    
         
            +
                audio_file = File.open(Dir.getwd + "/resources/speech.wav")
         
     | 
| 
      
 64 
     | 
    
         
            +
                future = @service.await.recognize(
         
     | 
| 
      
 65 
     | 
    
         
            +
                  audio: audio_file,
         
     | 
| 
      
 66 
     | 
    
         
            +
                  content_type: "audio/l16; rate=44100"
         
     | 
| 
      
 67 
     | 
    
         
            +
                )
         
     | 
| 
      
 68 
     | 
    
         
            +
                output = future.value.result
         
     | 
| 
      
 69 
     | 
    
         
            +
                refute_nil(output["results"][0]["alternatives"][0]["transcript"])
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
              def test_recognize_async
         
     | 
| 
      
 73 
     | 
    
         
            +
                audio_file = File.open(Dir.getwd + "/resources/speech.wav")
         
     | 
| 
      
 74 
     | 
    
         
            +
                future = @service.async.recognize(
         
     | 
| 
      
 75 
     | 
    
         
            +
                  audio: audio_file,
         
     | 
| 
      
 76 
     | 
    
         
            +
                  content_type: "audio/l16; rate=44100"
         
     | 
| 
      
 77 
     | 
    
         
            +
                )
         
     | 
| 
      
 78 
     | 
    
         
            +
                future.wait!
         
     | 
| 
      
 79 
     | 
    
         
            +
                output = future.value.result
         
     | 
| 
      
 80 
     | 
    
         
            +
                refute_nil(output["results"][0]["alternatives"][0]["transcript"])
         
     | 
| 
      
 81 
     | 
    
         
            +
              end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
              def test_recognitions
         
     | 
| 
      
 84 
     | 
    
         
            +
                output = @service.check_jobs.result
         
     | 
| 
      
 85 
     | 
    
         
            +
                refute_nil(output)
         
     | 
| 
      
 86 
     | 
    
         
            +
              end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
              def test_custom_corpora
         
     | 
| 
      
 89 
     | 
    
         
            +
                model = @service.create_language_model(
         
     | 
| 
      
 90 
     | 
    
         
            +
                  name: "integration_test_model",
         
     | 
| 
      
 91 
     | 
    
         
            +
                  base_model_name: "en-US_BroadbandModel"
         
     | 
| 
      
 92 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 93 
     | 
    
         
            +
                customization_id = model["customization_id"]
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                output = @service.list_corpora(
         
     | 
| 
      
 96 
     | 
    
         
            +
                  customization_id: customization_id
         
     | 
| 
      
 97 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 98 
     | 
    
         
            +
                refute_nil(output)
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                @service.delete_language_model(
         
     | 
| 
      
 101 
     | 
    
         
            +
                  customization_id: customization_id
         
     | 
| 
      
 102 
     | 
    
         
            +
                )
         
     | 
| 
      
 103 
     | 
    
         
            +
              end
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
              def test_acoustic_model
         
     | 
| 
      
 106 
     | 
    
         
            +
                list_models = @service.list_acoustic_models.result
         
     | 
| 
      
 107 
     | 
    
         
            +
                refute_nil(list_models)
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                create_acoustic_model = @service.create_acoustic_model(
         
     | 
| 
      
 110 
     | 
    
         
            +
                  name: "integration_test_model_ruby",
         
     | 
| 
      
 111 
     | 
    
         
            +
                  base_model_name: "en-US_BroadbandModel"
         
     | 
| 
      
 112 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 113 
     | 
    
         
            +
                refute_nil(create_acoustic_model)
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                get_acoustic_model = @service.get_acoustic_model(
         
     | 
| 
      
 116 
     | 
    
         
            +
                  customization_id: create_acoustic_model["customization_id"]
         
     | 
| 
      
 117 
     | 
    
         
            +
                ).result
         
     | 
| 
      
 118 
     | 
    
         
            +
                refute_nil(get_acoustic_model)
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                @service.reset_acoustic_model(
         
     | 
| 
      
 121 
     | 
    
         
            +
                  customization_id: get_acoustic_model["customization_id"]
         
     | 
| 
      
 122 
     | 
    
         
            +
                )
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                @service.delete_acoustic_model(
         
     | 
| 
      
 125 
     | 
    
         
            +
                  customization_id: get_acoustic_model["customization_id"]
         
     | 
| 
      
 126 
     | 
    
         
            +
                )
         
     | 
| 
      
 127 
     | 
    
         
            +
              end
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
              def test_recognize_websocket_as_chunks
         
     | 
| 
      
 130 
     | 
    
         
            +
                audio_file = File.open(Dir.getwd + "/resources/speech.wav")
         
     | 
| 
      
 131 
     | 
    
         
            +
                mycallback = MyRecognizeCallback.new
         
     | 
| 
      
 132 
     | 
    
         
            +
                speech = @service.recognize_with_websocket(
         
     | 
| 
      
 133 
     | 
    
         
            +
                  chunk_data: true,
         
     | 
| 
      
 134 
     | 
    
         
            +
                  recognize_callback: mycallback,
         
     | 
| 
      
 135 
     | 
    
         
            +
                  interim_results: true,
         
     | 
| 
      
 136 
     | 
    
         
            +
                  timestamps: true,
         
     | 
| 
      
 137 
     | 
    
         
            +
                  max_alternatives: 2,
         
     | 
| 
      
 138 
     | 
    
         
            +
                  word_alternatives_threshold: 0.5,
         
     | 
| 
      
 139 
     | 
    
         
            +
                  model: "en-US_BroadbandModel"
         
     | 
| 
      
 140 
     | 
    
         
            +
                )
         
     | 
| 
      
 141 
     | 
    
         
            +
                Thread.new do
         
     | 
| 
      
 142 
     | 
    
         
            +
                  until audio_file.eof?
         
     | 
| 
      
 143 
     | 
    
         
            +
                    chunk = audio_file.read(1024)
         
     | 
| 
      
 144 
     | 
    
         
            +
                    speech.add_audio_chunk(chunk: chunk)
         
     | 
| 
      
 145 
     | 
    
         
            +
                  end
         
     | 
| 
      
 146 
     | 
    
         
            +
                  sleep(1)
         
     | 
| 
      
 147 
     | 
    
         
            +
                  speech.stop_audio # Tell the websocket object that no more audio will be added
         
     | 
| 
      
 148 
     | 
    
         
            +
                end
         
     | 
| 
      
 149 
     | 
    
         
            +
                thr = Thread.new { speech.start }
         
     | 
| 
      
 150 
     | 
    
         
            +
                thr.join
         
     | 
| 
      
 151 
     | 
    
         
            +
              end
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
              def test_recognize_websocket
         
     | 
| 
      
 154 
     | 
    
         
            +
                audio_file = File.open(Dir.getwd + "/resources/speech.wav")
         
     | 
| 
      
 155 
     | 
    
         
            +
                mycallback = MyRecognizeCallback.new
         
     | 
| 
      
 156 
     | 
    
         
            +
                speech = @service.recognize_with_websocket(
         
     | 
| 
      
 157 
     | 
    
         
            +
                  audio: audio_file,
         
     | 
| 
      
 158 
     | 
    
         
            +
                  recognize_callback: mycallback,
         
     | 
| 
      
 159 
     | 
    
         
            +
                  interim_results: true,
         
     | 
| 
      
 160 
     | 
    
         
            +
                  timestamps: true,
         
     | 
| 
      
 161 
     | 
    
         
            +
                  max_alternatives: 2,
         
     | 
| 
      
 162 
     | 
    
         
            +
                  word_alternatives_threshold: 0.5,
         
     | 
| 
      
 163 
     | 
    
         
            +
                  model: "en-US_BroadbandModel"
         
     | 
| 
      
 164 
     | 
    
         
            +
                )
         
     | 
| 
      
 165 
     | 
    
         
            +
                thr = Thread.new { speech.start }
         
     | 
| 
      
 166 
     | 
    
         
            +
                thr.join
         
     | 
| 
      
 167 
     | 
    
         
            +
              end
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
              def test_inactivity_timeout_with_websocket
         
     | 
| 
      
 170 
     | 
    
         
            +
                audio_file = File.open(Dir.getwd + "/resources/sound-with-pause.wav")
         
     | 
| 
      
 171 
     | 
    
         
            +
                atomic_boolean = Concurrent::AtomicBoolean.new
         
     | 
| 
      
 172 
     | 
    
         
            +
                mycallback = MyRecognizeCallback.new(atomic_boolean: atomic_boolean)
         
     | 
| 
      
 173 
     | 
    
         
            +
                speech = @service.recognize_with_websocket(
         
     | 
| 
      
 174 
     | 
    
         
            +
                  audio: audio_file,
         
     | 
| 
      
 175 
     | 
    
         
            +
                  recognize_callback: mycallback,
         
     | 
| 
      
 176 
     | 
    
         
            +
                  interim_results: true,
         
     | 
| 
      
 177 
     | 
    
         
            +
                  inactivity_timeout: 3,
         
     | 
| 
      
 178 
     | 
    
         
            +
                  timestamps: true,
         
     | 
| 
      
 179 
     | 
    
         
            +
                  max_alternatives: 2,
         
     | 
| 
      
 180 
     | 
    
         
            +
                  word_alternatives_threshold: 0.5,
         
     | 
| 
      
 181 
     | 
    
         
            +
                  model: "en-US_BroadbandModel"
         
     | 
| 
      
 182 
     | 
    
         
            +
                )
         
     | 
| 
      
 183 
     | 
    
         
            +
                thr = Thread.new { speech.start }
         
     | 
| 
      
 184 
     | 
    
         
            +
                thr.join
         
     | 
| 
      
 185 
     | 
    
         
            +
                assert(atomic_boolean.true?)
         
     | 
| 
      
 186 
     | 
    
         
            +
              end
         
     | 
| 
      
 187 
     | 
    
         
            +
            end
         
     |