I'm sending LUIS a query that is based on a time value (e.g. "what is the time 10 minutes from now" - just an example). I want the time to come back in the local timezone, so on the LuisPredictionOptions object (C#) I set the TimezoneOffset (as an example I set it to 2 hours ahead, or 120 minutes).
In Fiddler I can see when it calls the LUIS endpoint it's correctly adding "timezoneOffset=120.0".
However, the timezone comes back as UTC - it doesn't matter whether the timezoneOffset is set, or even what it is set to, the time always comes back UTC, using the builtin datetimeV2 entity.
Does anyone know what the TimezoneOffset property is for? Am I just using it incorrectly? Is there another way perhaps to get a local time from LUIS?
[Update]: Here are some examples: https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/[AppId]?verbose=true&timezoneOffset=0&subscription-key=[subscriptionkey]&q=/luis/v2.0/apps/c1be57f4-3850-489e-8266-db376b82c011?timezoneOffset=120&log=true
https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/[AppId]?verbose=true&timezoneOffset=0&subscription-key=[subscriptionkey]&q=/luis/v2.0/apps/c1be57f4-3850-489e-8266-db376b82c011?timezoneOffset=240&log=true
and I'm trying the following example utterance: "in 10 minutes".
When I do this, the timex is in UTC (e.g. timex=2020-01-11T16:08:25) and the "value" comes back with the same value, minus the "T", as follows: value=2020-01-11 16:08:25
I could understand perhaps if the timex is in UTC, but then possibly "value" should be adjusted by the timezoneOffset?
It looks like there's an incorrect question mark in your URL, right before timezoneOffset.
Using the same query I was able to get the expected behavior, where the returned value is different by 10 minutes.
Which SDK are you using? Perhaps you're using the V3 Runtime SDK which uses the V3 endpoint that doesn't use timeZoneOffset but instead uses datetimeReference, and need to use the V2 Runtime SDK instead.
https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/[app-id]?verbose=true&timezoneOffset=10&subscription-key=[key]&q=in 10 minutes
The TimeZoneInfo class's FindSystemTimeZoneById method can be used to determine the correct timezoneOffset based on system time. An example in C# is shown below:
// Get CST zone id
TimeZoneInfo targetZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
// Get local machine's value of Now
DateTime utcDatetime = DateTime.UtcNow;
// Get Central Standard Time value of Now
DateTime cstDatetime = TimeZoneInfo.ConvertTimeFromUtc(utcDatetime, targetZone);
// Find timezoneOffset
int timezoneOffset = (int)((cstDatetime - utcDatetime).TotalMinutes);
Reference:
https://learn.microsoft.com/en-us/azure/cognitive-services/luis/luis-concept-data-alteration?tabs=V2#c-code-determines-correct-value-of-timezoneoffset
Related
I want to create a method that gets 24 hour format parameter for the user.
Something like: set24HourTime(LocalDateTime hourTIme).
I know I can do it simple by defining an int as a parameter, but I wondered if it can be done with java build in API?
If you have a LocalDateTime param, then the value is already in 24 hour format.
https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#getHour--
just return hourTIme.getHour()
I am trying to create a load test versus one of our apps that is used on web and mobile. I am trying to access this app from the web. I login to the website. Using this login, I click on the web version of the app. The below response is returned here.
This app is using SiteMinder and Worklight to negotiate with the main site I am coming from.
My question is, how do I correlate a value such as 'SMIDENTITY=' when it is being returned TWICE in the same string?
Here is an example of what is being returned by the server (I have broken up the string so the variables are separated:
Test4.c(225):
Cookie:testcookie=oreo;
SMIDENTITY=Cq16kwJwrJWgBd5zQ8ci0kP8IEZ47kftOxMr1wVsxx+W/7sGS92ZA9zu69GRpolh0PRX97bvfHRya0m1ty1E07qR0HjKKXE8ypRsWPgG4m2w8mlspPUxL8t5Z4RE5/CCJpOxpXHIHeQK4f77gkihKFq8cBQr+Vy9kZGFGMUJH6+EiLNmmJT+XYZcUi7gzV0r+naJypMewtXAYaOcvn8Kqsu2JA5SiNUcJbxxX4dNCHOsC4cf45Jm0H40Efq6nOwN7MDyAE2gXSou4oa9ZlYxlsvWdEVl6CxgnqnqEkBJYVuBsgj/277+F7q9KB4xpct/sYvRT9CR/Rvh79hmpJJedH+lA8A6UtqyA21CnECQJzrbKJJgx3eeyN86BQv3g/kOWJ2CE4txEn22U+AjMKmxgB7fmLTNdxKS5+sn9P/Fs+TGwhRSX3pr/l1h4NQpNzb1Rz1fbt80/ODWbLSlBFBmQTCCRkLx54dcR40lH0iDl9543KZCAphpzKXS429ZZyCH00xdITd4vpab/l9cWZEHuoJFbgf4yWmx6eGo6zdPxb6Yv/D2EM9GnXnWsF14lrI4XtlreE+9o3EXSTbbz+MHh/ym/LzA4zaul4luiPMUNAnP+qatTR9WvK1NsC2KgsQl;
_ga=GA1.2.653519056.1433336304;
test_pol=UQEpK70TB9Ps6k9Zn0ZxC/WTTWAF7+1iJrMLhMAAA7SYUNDT9zue/krOWPgYi0yqdM6KUELeseH7xg==;
prismdc=prism1;
SMSESSION=CsYLjBNgLxl/cD1kJbxQdF2SAmFOE70rad51OQMLm1DQPcD2KYey2K05r4s8s9WFfEwLt2+wJweUR+MAf4Vq4v0ENDwm0ciXQ3jWEZheBbcugYPeUmAIPOIs21aBJxlPTCIXXpfmUhPFHOZnTEm7zsR1Hh9Y9gP9JB451iVsjRsojcwZGXwY3B7SqdMv2yDWnEebraDsiynDWadg63bIdoEvlPoVU0bPXbxKi5+F88PDB8S886UIWBfITiB8h2ETyNnKVFUm6l8Isyd68g8xwnExdbgBC4RYMhaeRulPKtYBKbMckwp6Wn0l125RGhqXayU7XLz7PvcsIqEZfxHFqD02kA0g6FNvBpCY1DY0TWn1FvnDNGyAzfDOclLIy78w1kDfL0FJ9G49LdJJJbpdmFkHSk1SCul8Hi5kvaxxntj8D4dEt/L4D1biLL+d6Wtzxqr+7qYS4SSY0ns/q2xOvmxJFulp+0cND2XZUDRH5LrSiVuQxZqa5hNJNfUkHRcNKveO5LJ/+bPPUyIWKplN1vTpS1/GoAZ88P3fAzVgNRBjrYZhOTJxRBAEAgd5CHAy1jjg+oH02xMZ1aPZ6TzKHU6QQFfrsgBqOjSPgMf/42MsyrO5TiXWSLgfttdCbReyF3j+jc/wA0a5UrVNtsqA3PTNvPtw+ctC8zwG73xHGOP+tMyupdIFhIwW5kvGMAKJWq4dsVq4QRGjd5kqUxIUDfN5TPcHHSzws4exH0F2VwxdmM3/VapwlwCvX5GOH78wGThIg6dxC2Ymib6nkB33wNbb4WlnZa23kkZYMjglBJj1HsTBMBF4mlkRwsWtRTXBlZSO7h34qjnDlkBI6FMeDO687pNaCo7a3QP7NkqLmwOps1CGgE1H3HRNHHbOu4trRlYdn2P1tBJLJFdf2vltWs75ZXi3duSIjAYqAz1DVqq2elqvREyP8+r34MQnSOKZG+fsTHGikOXuN8wAWOnohHJ2dYhvbXnQ7MnMlF0jac814HGzsWV74lH4zBijMMxh;
SMIDENTITY=Znq+Rjv7MGdt9xtb+8uGlTTdQZ9iYv6wGHXLdmFtwBycXLBJW8yDWKGSMWcsEzDS4HiatqOMOkvr6MrvozpzdChfri8omqI1NEQoNROSwOtyNzAkw+bz5JNKxvMYFCqPW/1PsUqFCG9TdOLxopxyza8JlCZIFs4XNmO0isgW7QwqCRYmGcwniMjfUMhrG87O6dU+/bOdxr6QrETp6QzLFxE/gdk1t4MqyUhdfWJA+BwRLQLj5DDasAYsRm0FegIbeqLgZDnLE9I+LbMpspcs/uAxngT7vLfvR+g7Ww9CpYbDx7KAernW7PzuzDuxwwKTr+ImolLUtc7eka1wl6wsdD7+jEDTnHda4wNVJjLoXldeAr6cJ2N1RF9UpjQkmDcaWTWU9v0ejB6/YZwKby8dRUuEH90BoSe+jicc/XHi5kq6w10P5r0/c0uZbgxrNAo8X+WW/QQUyOgsCVzila6z6Gef7zPgBw9lRjV5rYZlO97h3DEPgQoLNHLIummOdcJk84u9RfD68wk+3J2tbvKNj0O0ib5qapmJ3b7zXdmHW9KCHLz7MBMLl7tznaLyUoCSt+BQL8O/NfvpCmV6Rn5UEmeqLZXGaGzszc7oy+08WaGwGE7+dEEZmmC/httCy1bj;
LtpaToken2=D8P5upMb3r8v+VXraUoNZUCh08z0wKI466bDTnYEkrV9jS1Y6FOIYGyU18ETtFWxXBsyIizXZ2d9JmHTTFaBIpxhqHceufkDohe/dQoDPkiQgMmxGrX1IobPmb0tYgD2yrLh7TkxpBTt5nXn2isK2PVAk4a0zT/qa0g4huq457lH3CDLQF+jj8w9qB2/gSVlWXKX0SKHNd2YJ2mBrc4j7oBOE8GOXiJlH8B5qnKvX99aYIdKxXoNILDBfK/RFaGWIy34uLNVRjOkZcUkKCBVB0D83GIj2EM2YqFs+GuWnRKvW7woAGIN69j7T50NWoIF/TPmdCnCM1HEfxhHfqxK0u5PUKheZeKNXqepoNIEb5ry1QGBho0OAeXQvlYeXiPZfKknu66iJpPEQaIpj0csWThztytn7uDuAiTCPZ4Yhwm+6pYHhxp7Jx/U84L2u3M7BamqD+oiCrFaYpMXkCGHw99hbHhE1okP3q+Hb/TCODKwIG80lw7660Y+nFGMIaCreNeu0Em+dY7rTU+KubyJqeYtt/NssB1Qq945MShkhix+KDKE+ViNmmyRqyUQpTEx6fXgbJQihm7KguDfOJSxvsalaO3vAwwN/mJTSxcRVktIaAYT4ZcakZS5r/mLRVllQmOczO4Ex2zAgflcEZ3GUlG3+TuL6JCYVWI3haAa0wUWffLCYRPo/n2+4vl5v/x9HkTXIZe0p4JCS1nWpzZXsg==;
LtpaToken=EHYGd9YV18oZsd8vSkJGm6EitmZCspgF2RbWMb/kDol6urQ8ZBeespgw8VR0jXPkwKdnAQjJ5x4ZdmTexnZiL3QIVzdH+DwWbTNP4KBAe/cdizYf8/0w05B9N13YX4rT7xl/Y0ZUhZX1brNgM7zP19a4IjL0E0M5uK2qah9ggErQhovcziPkA6Uubd4ne5keV/H/S0ZdaRMSjhXp6njlRtJl6C2U5r91YTXYVnbnl+sgG88g9jnPa6+peg+yi4P9VeoSohydoAIrqBGbpr7yL9ocaO3dL6bq/Ff6WAWZuca1V+7+x4bxtWHQ2CgafibbAkowunOsCyHvCRbv2FH8MQ==;
JSESSIONID=0000QLn5MU6tB5uMM0bXlOC8ZYS:15b4l3mm8;
SITE_ENTRY_JUMPTO=polhome;
scoreboard="";
scoreboardReport="";
WLSESSIONID=0000Xr6ZS67VI4UH-HoycrnVBq1:18lm04lom\r\n
Use the Ordinal (or index) number of the instance of the variable which you need as part of your collection
See training material or online help for correlation functions related to ordinal value
You didn't say what you're actually trying to do. Do you need only use the most recent? only use the first?
You use a web_reg_save_param_ex to capture all Ordinals of a parameter. It puts it into an array.
You can then do what you want with that array.
You can also use a web_reg_save_param_regexp
I coped the code from the official documentation and put your variable name in there to make it easier for you.
web_reg_save_param_ex(
"ParamName=SMIDENTITY",
"LB/IC=SMIDENTITY=",
"RB/IC=;",
"Ordinal=all",
LAST);
web_submit_data("...");
/* Getting individual elements from a parameter array.
Since the parameter created by web_reg_save_param_ex
is called "SMIDENTITY", the number of elements
is saved in parameter "SMIDENTITY_count".
The array elements are parameters "SMIDENTITY_1",
"SMIDENTITY_2", ... "SMIDENTITY_n".
*/
elemCnt = atoi(lr_eval_string("{SMIDENTITY_count}"));
lr_output_message("Number of items found = %d",elemCnt);
for (x=1;x<=elemCnt;x++) {
sprintf(arrayParamName, "{SMIDENTITY_%d}", x);
lr_output_message ("%s: %s",
arrayParamName,
lr_eval_string(arrayParamName));
}
I've got a tiny Sinatra app running on Heroku, and it has a method that receives a POST and creates a database object with the parameters of the POST.
One of those params is a timestamp of the form "1432565475.000007". I want that as a date & time in the database, so I added a column, then in the method that handles the post I have:
e.time = Time.at params["timestamp"].to_f
The times come out correctly, but the dates are all Jan 1, 2000.
If I run irb at heroku ("heroku run irb") and try the above line of code manually it converts correctly. It's only when it's running inside my server instance that it interprets the calendar date wrong.
So then I created a view that just iterates through the db, converting the original timestamp (I also have that in a column) into dates. The idea being that this is more closely approximating the code that handles the POST:
-MyEvent.all.each do |me|
%p
=Time.at me.timestamp.to_i
And that works perfectly.
Any ideas?
This is related to another StackOverflow question from a year ago. But, a bit different.
This is in Ruby/Mongoid: 2.2.6.
When I got going with MongoDB, it looks like we stored the ID of an MongoDb document incorrectly, because a simple find on an ID is not working, yet it's returning the document when we run a where query on other attributes.
I've tried "resetting" the id field by using the object returned from the where and setting the "id" and the "_id" to a BSON::ObjectId version of the stored string. This did not work, as the then record is still not queryable by this field.
Any other suggestions before I just completely wipe the disk (losing months of production data) and starting over?
Edit: An example of a document that is retuned in the loop that is not retrievable.
{"_id"=>"4f47267193546d160b0171a2", "attribute_tags"=>[{"tag"=>"website"}, {"tag"=>"twitter"}, {"tag"=>"website"}, {"tag"=>"twitter"}], "contact_info"=>{"facebook"=>[], "success"=>true, "created_at"=>2012-02-24 05:58:06 UTC, "tags"=>[], "twitter"=>[], "email"=>[], "phone"=>[], "linkedin"=>[], "google_plus"=>[], "youtube"=>[], "contact_form"=>false}, "created_at"=>2012-02-24 05:56:01 UTC, "data"=>{"twitter_followers_count"=>112, "twitter_is_translator"=>112, "twitter_protected"=>false, "twitter_url"=>"http://www.bettyunderground.com", "twitter_verified"=>false, "twitter_statuses_count"=>2040, "twitter_listed_count"=>14, "twitter_geo_enabled"=>true, "twitter_friends_count"=>124, "twitter_created_at"=>"Fri Jul 17 21:41:00 +0000 2009", "twitter_contributors_enabled"=>false, "enriched_at"=>2012-02-24 05:58:09 UTC}, "demographics"=>{}, "description"=>"The trials and tribulations of a polemicist", "directory_ids"=>[], "forums"=>[], "found_at_url"=>"http://www.bettyunderground.com", "geographics"=>{"language"=>"en", "location"=>"San Francisco, CA"}, "hashtags"=>{"tag"=>{"website"=>true, "twitter"=>true}, "reachable_via"=>{"twitter"=>true}}, "host_names"=>[], "ignore_project_ids"=>[], "keyword_scores"=>{"return policy"=>0.0}, "keywords"=>["return policy"], "last_contact_info_update"=>2012-02-24 05:58:09 UTC, "name"=>"Betty Underground", "new_profiles"=>[{"service"=>"twitter", "user_id"=>"BettyUndergrnd", "score"=>1.0}, {"service"=>"twitter", "username"=>"BettyUndergrnd", "score"=>1.0}], "presence_score"=>0, "profile_url"=>"http://a2.twimg.com/profile_images/1459407098/image_normal.jpg", "profiles_retrieved"=>true, "references"=>[], "share_counts"=>{}, "tags"=>["website", "twitter"], "twitter"=>"BettyUndergrnd", "updated_at"=>2012-03-17 10:08:09 UTC, "wordsmaster_ids"=>[], "reachable_via"=>[], "read_project_ids"=>[]}
It doesn't have a ObjectId for the ID field. Not sure how it got busted this way, but that's the way it is.
The code I'm using to modify it is:
#if d is the document
old_id = d._id
d["_id"] = BSON::ObjectId(old_id)
d.save
I have placed a gist of doing this from my console. You can see exactly what I'm doing.
Any thoughts would be appreciated.
https://gist.github.com/2087011
_id field is immutable. You have to insert a new document with a new value of _id and delete the old one.
In Mongoid, there is a rake task to convert the ObjectIds.
If you use this, you'll have a mirror of your collection. Then, simply rename and you'll be set.
It will error if you have duplicate object_ids though, so you might need to run it a few times.
And, it's SLOW.
I am using a datatable loaded via JSON with date like this : 2010-06-03
With Opera and Chrome I have the correct date displayed as 06/03/2010. With Firefox Windows (even in safe mode, without any plug-in), I get a NaN/NaN/NaN. If I use the debug console, I see a valid date, but in Firefox Windows I can see a "Invalid date".
Bonus, with Firefox Mac awith a ton of plug-ins, we have the valid date!
Here is the setting of the date column
oColumn['editor'] =
new YAHOO.widget.DateCellEditor({asyncSubmitter:UpdateRowData});
oColumn['formatter'] = YAHOO.widget.DataTable.formatDate;
oField['parser'] = 'date';
Thanks,
Cédric
Turns out that "2010-06-03" does not return an valid Date object (at least in FF/Win). For cross-browser compatibility, be sure your value is in a format acceptable to the Date constructor:
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date
Jenny's reference is good but in case you don't want to dig, you should pass:
"YYYY,MM,DD"
into the YUI parser to get it to work in FF/Win as well as Chrome.
Depending on your situation, another way to solve this is to include an actual date constructor in your "JSON" data. Once you do so, it's no longer standard JSON and you'll need to eval it on the browser.
Eg
{'duration': 75, 'end_time': new Date(Date.UTC(2008,11,23,17,45,00,0)),
'start_time': new Date(Date.UTC(2008,11,23,16,30,00,0))}
The benefit is no longer any need to parse the data on the browser since the datum is already a date object.
The downside is that you're no longer sending valid JSON from your server to your client browsers.