better solution for dealing with local echoes of card fragments

The issue we were encountering in staging where we would get missing card fragment errors was due to a matrix feature called "local echo". This feature allows matrix clients to handle local messages before they have received a matrix server response. These locally echoed events are special in that their event ID's are actually not "real" event Id's rather the event ID is actually a transaction ID, and according to the matrix spec, the onus is on the client to correlate locally issued events with events received from the server (which have the real ID in them). so our client was dutifully gathering event Ids from card fragments and setting those in our boxel messages. However, the locally received events had transaction ID's masquerading as event ID's and the card fragments could not be constructed properly due to this ID mismatch. Oddly, when the matrix server is running locally, local echoes are not used (probably the matrix client is able to recognize this particular scenario and disable the feature).
In this fix we have restructured the card fragments to point to each other (like a linked list). in the timeline event handler if we see that the card fragment event is missing (because we cached a local echo of the card fragment), then we'll explicitly go out and fetch the event by its actual ID (as well as any subsequent fragments). this solution should also work nicely with the broken matrix histories where there is a single card fragment (which is probably all of them).

Not that it is related to this PR. As I cancel session and switch rooms. I often see

Is it expected to see this at all?

Not that it is related to this PR. As I cancel session and switch rooms. I often see

Is it expected to see this at all? EDIT: perhaps related to this #1090 (comment)

yeah i think that's related to the issue you mentioned.


Support any networkx version

Following issues #63 and #65 we realized there were significant changes in networkx 2.0. I believe I've updated this code to be compatible we networkx versions 1.x and 2.0. I tested both locally on python3.6 with networkx 1.11 (currently the pinned version) and 2.0 and the tests pass.

It looks like you only use three methods of NetworkX's Graph API:

_graph.neighbors(atom)
_graph.nodes()
_graph.get_edge_data(atom1, atom2)

What about factoring these three calls out into three methods that encapsulate all of the graph operations so that if things in the future change, you only need to change one or two calls instead of 24 changes distributed throughout the file?

@jchodera I can do that.
forcefield.py also uses networkx though nothing used in that script seems to be affected by the changes here.

I think we'll want to do a few rounds of refactoring on forcefield.py both to isolate the Graph API and the OEMol/RDKit API with a level of indirection.

I'm refactoring to isolate networkx methods. This last commit has a couple of typos, if I fix those the tests should pass, I'll get it working in the morning.

Tests passed locally with those typos fixed, @jchodera or @davidlmobley could I get a review?

@davidlmobley Travis tests are also passing, they just hadn't finished when I commented last night. Are we go to merge here?


Question: How to specify asciidoctor extensions ?

I am using jekyll-asciidoc to generate the website http://book.feelpp.org
I would like to use asciidoctor extensions such as asciidoctor-bibtex, how do I specify the extensions I would like to use when running jekyll-asciidoc ?
It was not obvious to me while reading the documentation

The question is also related to asciidoctor/asciidoctor#2101

You load Asciidoctor extension code just like you would any Jekyll plugin. The following page describes the different strategies.
https://jekyllrb.com/docs/plugins/#installing-a-plugin
The fastest way is to create a _plugins folder, add a file named asciidoctor-extension.rb to it, and populate it with the following code:
require 'asciidoctor/extensions'

Asciidoctor::Extensions.register do
  treeprocessor do
    process do |document|
      puts "Processing #{document.attr 'docfile'}"
      nil
    end
  end
end

If the extension is published as a gem, it's just a matter of adding it to the jekyll_plugins group in the Gemfile, just like you would with the plugin itself or asciidoctor-diagram.

I've added this note to the README.


Does chdb supports orm? If supports, how to use?

Use orm, we doesn't need to write raw sql to do crud operation, instead of using sqlalchemy package to deal with database.
Usually, with one orm class to map one database table. for example as below:
from sqlalchemy import Column
from clickhouse_sqlalchemy import engines
from clickhouse_sqlalchemy.ext.declarative import declarative_base
from clickhouse_sqlalchemy.types import String, UInt32

ChBase = declarative_base()

class FileInfo(ChBase):
    __tablename__ = 'FileInfo'
    FILE_ID = Column(UInt32, primary_key=True)
    filename = Column(String)
    filepath = Column(String)
    filemd5 = Column(String(32))
    __table_args__ = (
        engines.MergeTree(order_by=('FILE_ID',),
                          primary_key=('FILE_ID',)),
        {'comment': 'FileInfo Table in clickhouse'}
    )

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

ckuser = 'ckuser'
ckpwd = 'ckpwd'
ckip = 'ckip'
ckport = '8123'
ckdbname = 'testdb'
uri = f"clickhouse://{ckuser}:{ckpwd}@{ckip}:{ckport}/{ckdbname}"
engine = create_engine(uri, echo=False)
session = sessionmaker(bind=engine)()
session.execute('SELECT 1')
FileInfo.__table__.create(engine)  # create table FileInfo

session.query(FileInfo).filter_by(FILE_ID=1).all()  # equal to sql: select * from FileInfo where FILE_ID=1

chdb is a superb package, very useful for testing and debug👍👍👍
But all code related with clickhouse uses orm in my softwore project, so I want to whether chdb supports orm?
uri is a very important parameter.
If supports, how to set uri? something like "clickhouse+chdb://xxx"?

chDB do have Python DB-API support. See https://github.com/chdb-io/chdb/blob/main/examples/dbapi.py
I didn't try it with SQLAlchemy. You can give it a try. If any problem, please tell me here or on discord.

seems not support, coz uri is a fundamental parameter. with uri(user:password@dbip:port/dbname), client can connect with database.

@auxten I also ask sqlalchemy for this question ^_^
Need extra database dialect code development to support this function.
https://github.com/sqlalchemy/sqlalchemy/discussions/11319
chdb and sqlalchemy both sides need to negotiate this work.

Thank you! I will look into this tomorrow. BTW, are you interested to contribute this for chDB?😉

Yes, I am interested😊, but I am not familar with lower level logics of sqlalchemy dialect.
Maybe in the future after I understand these base knowledge, I can make a help.
By the way, I have found the link of supported sqlalchemy dialect
https://docs.sqlalchemy.org/en/14/dialects/

I spent a few hours to prepare POC: https://github.com/rominf/clickhouse-sqlalchemy/tree/rominf-chdb. It is still on early stages (not production ready), but kinda works for poking. I had to make some workarounds for known issues: absence of persistence between calls for Memory engine and default database: https://github.com/chdb-io/chdb/issues/262#issuecomment-2325570573 and https://github.com/chdb-io/chdb/issues/225#issuecomment-2154217779. Also, the conversion for complex types does not work (this contributes to most test failures). Currently, 25/177 tests of testing suite testing chDB driver FAIL (in other words, 152/177 PASS).
To play with it, install it as usual from the branch above and then write something like:
from sqlalchemy import create_engine, Column, MetaData

from clickhouse_sqlalchemy import (
    Table, make_session, get_declarative_base, types, engines
)

uri = 'clickhouse+chdb:///test?path=/tmp/chdb-test'

engine = create_engine(uri)
session = make_session(engine)
metadata = MetaData()

Base = get_declarative_base(metadata=metadata)

class Rate(Base):
    day = Column(types.Date, primary_key=True)
    value = Column(types.Int32)
    __table_args__ = (
        engines.Log(),
    )

metadata.create_all(bind=engine)
from datetime import date, timedelta

from sqlalchemy import func

today = date.today()
rates = [
    {'day': today - timedelta(i), 'value': 200 - i}
    for i in range(100)
]
session.execute(Rate.__table__.insert(), rates)
session.query(Rate).count()  # Outputs 100

Feel free to borrow my code/ideas/contact me for working together/etc. to get this driver fully working!


alias for MAC-Address

make is possible to define an alias for MAC-Addresses to make it easier to remember to which device it belongs.

you can now name a MAC-Address using an alias. Please delete cookies to use this feature properly ;)


Create milestone blog post of the first apk release

done https://makers.bolt.fun/story/milestone-010-first-minor-release-of-the-10101-wallet--355


Do not re-encode head chunk for ChunkQuerier

Currently, we re-encode the head chunk (by iterating through all samples and re-compressing them into a chunk) while using ChunkQuerier to avoid races with appends. It is much more efficient to just take a copy of chunk bytes.
benchmark                        old ns/op     new ns/op     delta
BenchmarkHeadChunkQuerier-10     575568        199947        -65.26%

benchmark                        old allocs     new allocs     delta
BenchmarkHeadChunkQuerier-10     2720           2320           -14.71%

benchmark                        old bytes     new bytes     delta
BenchmarkHeadChunkQuerier-10     256892        215310        -16.19%

These are the benchmark results for querying samples; unaffected. Sometimes delta of running time is ~0%, but many times there is an improvement (which should not be the case actually).
benchmark                   old ns/op     new ns/op     delta
BenchmarkHeadQuerier-10     1239021       1216053       -1.85%

benchmark                   old allocs     new allocs     delta
BenchmarkHeadQuerier-10     2820           2720           -3.55%

benchmark                   old bytes     new bytes     delta
BenchmarkHeadQuerier-10     213688        202484        -5.24%

Frankly I'm a bit lost in populateWithDelChunkSeriesIterator, populateWithDelSeriesIterator, populateWithDelGenericSeriesIterator - I have very little idea what each does and when they are used.

I feel you, I also get lost everytime. From the looks of it populateWithDelGenericSeriesIterator is generic implementation that helps populate the chunks while taking care of deletions (i.e. tombstones). populateWithDelChunkSeriesIterator and populateWithDelSeriesIterator use that genetic iterator to finally provide chunks and samples respectively. Some interface/plugging magic going on in the upper chain - this refactor was done to make life easy for downstream consumers and probably also helps Prometheus in some ways.

@bboreham addressed your comments.


registerWebInterface() redirects include internal port number.

Minimal case to reproduce,
@path("/users")
class Users {
    void index() {
        render!"index.dt";
    }
}

shared static this() {
    URLRouter router = new URLRouter;

    // . . .

    router.registerWebInterface(new Users);
}

Requests made to /users are redirected to /users/, however, the redirect includes the port number the vibe app accepted the request on. This is problematic for environments where the internal port number (which vibed is bound to) does not match the external port number (which requests arrive on). For example if the app listens on port 5000, but incoming requests are actually accepted on port 80.
I've set up a Heroku app that demonstrates this behavior. Note that it is running on a free dyno, and may take a while to spin up.
Works correctly: http://testrig.herokuapp.com/users/
Problem redirect: http://testrig.herokuapp.com/users
(May redirect to something like: http://testrig.herokuapp.com:48669/users/)
In the case of Heroku, this is particularly problematic as there is no control over what the internal port number is. It is assigned (via environment variable) whenever the app is deployed, and is usually different every time.

Currently the server expects the "X-Forwarded-Host" header to be set by the proxy server - if that is given, it will ignore the local port. This works for simple setups, but should definitely be made customizable in the future. Does Heroku set any similar headers, or can it be made to?

It appears Heroku does not set the X-Forwarded-Host header, but instead all of these,
https://devcenter.heroku.com/articles/http-routing#heroku-headers
Other major HTTP servers appear to support these, but this is probably the cause of the issue.

Resolved by #1491


[A11Y] Android: Responsive Menubar component have hidden graphic on it

ENVIRONMENT:
OS (number): N (7.0)
Build number: NRD91R
Form factor (Smartphone / tablet):  Nexus 9
Browser: Chrome Dev 59.0.3062.4
Pre-requisite:

Talkback is ON

STEPS TO REPRODUCE:

Open https://ampstart.com
Linearly Navigate to COMPONENTS link and double tap on it.
Linearly navigate to the “Navigation” components section and linearly navigates through the Responsive Menubar.

ACTUAL RESULTS:
While linearly navigating a hidden image is encountered and talkback says it as “The blog, graphic”
EXPECTED RESULTS:
No hidden content should be encountered or identified when using screen reader.
ATTACHMENT(S):

Fixed in my a11y bugs branch
Commit Fix


[Playground] playground page layout

Related to #288
This PR is:

To apply Fluent UI layout using the FluentLayout component.

Test Results
✔ Tests 175 / 175 - passed in 38.4s
🔍 click here for more details


Can the auto refresh frequency be configured ????

The heatmap graph redraws itself so often, can this refresh rate be congigured by changing something? Like change some souce code or something else?

As far as I know the graph updated with your dashboard (update frequency of the dashboard).


Zoom Feature

It'd be nice to have some sort of zoom such that for images that are really big, it's easier to edit. It can be annoying to have to squint and go really close in order to do adjustments.

added zoom in fd2759ec97d797853dd20ae88d6f00d53428e65b fabric-branch, needs to be merged after fabric update is done.

finally finished! ae15d14
🙌 👏 👏 🎆 🍾 🔥 👍


Unable to Run, Asking for Password while installing pods.

Summary
Steps to reproduce
Clone the code and then run command pod install. See the result.
Remove passcode restrition.

Hello @faisalriazgoraya
You need to comment and uncomment the following pod libraries:
    pod "PIAAccountModule", :git => "#{$git_root}/#{$accounts_repo}"
    #pod "PIAAccountModule", :git => "#{$gitlab_kn_root}/#{$accounts_gitlab_repo}", :commit => '6116a38'
    pod "PIARegions", :git => "#{$git_root}/#{$regions_repo}"
    #pod "PIARegions", :git => "#{$gitlab_kn_root}/#{$regions_gitlab_repo}", :commit => '3b9395f'

Regards,
Jose

Hello @faisalriazgoraya
You need to comment and uncomment the following pod libraries:
    pod "PIAAccountModule", :git => "#{$git_root}/#{$accounts_repo}"
    #pod "PIAAccountModule", :git => "#{$gitlab_kn_root}/#{$accounts_gitlab_repo}", :commit => '6116a38'
    pod "PIARegions", :git => "#{$git_root}/#{$regions_repo}"
    #pod "PIARegions", :git => "#{$gitlab_kn_root}/#{$regions_gitlab_repo}", :commit => '3b9395f'

Regards,
Jose

hi I also want to work but after comment and uncomment of these links same issue is happening please help more
these are my commands below:
Zubair-Ahmed-MacBook-Pro:vpn-ios ch.usman$ pod install
Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
Analyzing dependencies
[!] The version of CocoaPods used to generate the lockfile (1.10.1) is higher than the version of the current executable (1.10.0). Incompatibility issues may arise.
Pre-downloading: PIAAccountModule from https://github.com/pia-foss/mobile-common-account
Pre-downloading: PIACSIModule from git@codex.londontrustmedia.com:mobile/csi.git, commit 8185dc9215cf942dc4691efb9ae1d62066f3a9e2
<EMAIL_ADDRESS>password:

@zubairahmad2 you need to do the same for the PIACSIModule module

@zubairahmad2 you need to do the same for the PIACSIModule module

ok you mean to say that I comment and uncomment same module right ?

@zubairahmad2 you need to do the same for the PIACSIModule module

I have Benn done same but same issue
Zubair-Ahmed-MacBook-Pro:vpn-ios ch.usman$ pod install
Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
Analyzing dependencies
Pre-downloading: PIAAccountModule from https://github.com/pia-foss/mobile-common-account
Pre-downloading: PIACSIModule from https://github.com/pia-foss/mobile-common-csi
Pre-downloading: PIALibrary from git@codex.londontrustmedia.com:ios/client-library-apple.git, commit fe1b5e4
<EMAIL_ADDRESS>password:


Running rspec api tests only - ember seems to  intefere

Which operating system and version is the project developed on?
OSX El Capitan
Which version of [ruby][ruby] is the project developed on?
2.3.1
Which version of [npm][npm] is the project developed on?
3.10.6
Which version of [ember-cli][ember-cli] is the project developed on?
2.7
What is the [rails][rails] version?
<IP_ADDRESS>
What is the [ember-cli-rails][gem] version (from Gemfile)?
0.8.0
What is the [ember-cli-rails-addon][addon] version (from package.json)?
0.8.0
Is your application server [multi-threaded][](such as puma and unicorn) or is
it multi-process (such as thin and webrick)?
puma
What are the contents of config/initializers/ember.rb?
EmberCli.configure do |c|
  c.app :trekclient, path: "trekclient"
end

What are the contents of the Rails' view that renders the Ember application?
It's empty
How are the EmberCLI-related routes defined?
mount_ember_app :trekclient, to: "/"

How is the application deployed?
It's not, this is locally in development
I am not sure if this is an issue, but if I just want (for now) to write api tests only such as model and controller and route tests, I get the impression that ember-cli-rails is in the way?
Example output when running 'rspec spec'
NotesController routing routes to #edit
Failure/Error: expect(:get => "/notes/1/edit").to route_to("notes#edit", :id => "1")
   The recognized options <{"ember_app"=>:trekclient, "controller"=>"ember_cli/ember", "action"=>"index", "rest"=>"notes/1/edit"}> did not match <{"id"=>"1", "controller"=>"notes", "action"=>"edit"}>, difference:.
   --- expected
   +++ actual
   @@ -1 +1 @@
   -{"id"=>"1", "controller"=>"notes", "action"=>"edit"}
   +{"ember_app"=>:trekclient, "controller"=>"ember_cli/ember", "action"=>"index", "rest"=>"notes/1/edit"}
 # ./spec/routing/notes_routing_spec.rb:19:in `block (3 levels) in <top (required)>'

I am a bit confused about how I can fix that?

@rmcsharry thanks for opening this issue -- could you please read the CONTRIBUTING document and update the format of your issue to populate the issue template?
Could you share the pertinent portion of your config/routes.rb file?
EmberCli routes requests to the Ember application by declaring a catch-all route, constrained to format: :html requests.
How are you mounting your Ember application?
Where are you mounting it? Is it before the notes#edit route declaration?
If you're declaring notes#edit after the call to mount_ember_application, try declaring mount_ember_application as far down in your routes file as possible.

I was being blind. You are correct, I was mounting the ember app to early in the routes file.
Solved by "declaring mount_ember_application as far down in your routes file as possible."
Thanks!

@seanpdoyle I think there is something basic I am not understanding here about routing. Perhaps you can shed some light?
After I moved the mount_ember route root "/" to below my rails routes, rspec worked fine...but the ember routes no longer work...?
This breaks rspec, ember routes work, rails json routes work:
Rails.application.routes.draw do
  mount_ember_app :trekclient, to: "/"

  resources :employees
  resources :addresses
  resources :trails
  resources :notes
  resources :comments
  resources :assignments

end

This fixes rspec, none of the ember routes work:
Rails.application.routes.draw do
  resources :employees
  resources :addresses
  resources :trails
  resources :notes
  resources :comments
  resources :assignments
  mount_ember_app :trekclient, to: "/"
end

I think there is something basic I am missing here about how ember-cli-rails affects routing. Perhaps you can shed some light?

@rmcsharry in your application's case, mount_ember_app effectively mounts the Ember application to /(*rest), with a format: :html constraint.

but the ember routes no longer work...?

Could you elaborate a bit more on the issues you're having when your mount_ember_app is at the bottom of your routes file?


[docs] Update accordion.md - TransitionProps={{ unmountOnExit: true }} resolves #41513

The slotProps={{ transition: { unmountOnExit: true } }} prop on the Accordion seems to be outdated and the use of TransitionProps={{ unmountOnExit: true }} works.

[✅] I have followed (at least) the PR section of the contributing guide.

Could you please open an issue first and demonstrate the issue where slotProps.transition doesn't work?

Apologies @ZeeshanTamboli, I opened a coding sandbox and found that in the latest MUI version this is available but I am using v5.14.19. I will test further and if this is a problem I will re-open an issue.


ValueError when plotting  m_i

When trying to plot mag_i in the histograms it returns an error.
ValueError: bins should be a positive integer.
(It it not due to the ExoplanetEU2)

Discovered  vs mag_i returns
Possibly there is no data to plot?
builtins.ValueError
ValueError: max() arg is an empty sequence

Try change the axis for to linear.

For the first error: bins should be a positive number, it comes from int(num_points/50). Basically this happens when there are very few points.
A fix can be to always have at least 5 bins or some other small number, so: bins = max([5, int(num_points/50)]). Or simple don't make the histograms if int(num_points/50) is less than 1.

mag_i axis to linear helped for  Discovered vs mag_i,
But setting the bins to minimum 5 seems to have fixed most of it. (even log scaling)


chore: re-enable doc-check for Typescript snippets

Title

chore: enable typescript docs verification for example snippets
Description

This had been disabled leading to some erroneous Typescript snippets in the examples
Notes & open questions

Change checklist

[x] I have performed a self-review of my own code
[x] I have made corresponding changes to the documentation if necessary (this includes comments as well)
[ ] I have added tests that prove my fix is effective or that my feature works

Strange, I had assumed CI was running the command and that the actual doc-check command was a no-op, which is what this PR addressed. Turns out the CI was also a no-op as well, so I pushed a commit to fix in de72f20.
It also turns out a recent typescript upgrade broke ts-node which typescript-docs-verifier depends on so I am using a fixed Typescript version until that gets resolved and the ts-node fix should bubble upstream.


Support HC 12.4.1

Error message
Method not found: 'HotChocolate.Types.IFieldCollection1<HotChocolate.Types.IInputField> HotChocolate.Types.IOutputField.get_Arguments()'.
Error stack trace
at FairyBread.ValidationMiddleware.InvokeAsync(IMiddlewareContext context)\r\n   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)\r\n   at FairyBread.ValidationMiddleware.InvokeAsync(IMiddlewareContext context)\r\n   at lambda_method1014(Closure , IMiddlewareContext , ValidationMiddleware )\r\n   at HotChocolate.Resolvers.FieldClassMiddlewareFactory.<>c__DisplayClass5_01.<CreateDelegate>b__1(IMiddlewareContext context)\r\n   at HotChocolate.Execution.Processing.Tasks.ResolverTask.ExecuteResolverPipelineAsync(CancellationToken cancellationToken)\r\n   at HotChocolate.Execution.Processing.Tasks.ResolverTask.TryExecuteAsync(CancellationToken cancellationToken)
Versions:

FairyBread: 8.0.0
HotChocolate: 12.4.1
FluentValidation: 10.3.6

The problem is that the Hot Chocolate IFieldCollection has changed its type from IReadOnlyList to IReadOnlyCollection so in ValidationMiddleware.InvokeAsync the enumeration of the fields fails to bind.
Since IReadOnlyList implements IReadOnlyCollection I think alll you need to do is rebuild the project and that should be a non-breaking fix that would allow old and new versions of HC to work.

@brian-tygotech, I think the reason is slightly different. Arguments property was moved from IOutputField interface to.IOutputFieldInfo. IL has information on which interface method should be called, and for this reason, it cannot find the get_Arguments method on the IOutputField interface. So, it's a binary breaking change, and rebuilding source code will not be enough. HotChocolate dependency should be updated first and then rebuild should help

@vhatsura yes, you're right, you need to build against the latest version.
@benmccallum thanks, much appreciated.

Thanks everyone! Should be a 9.0.0-rc.1 release of FairyBread up in a few minutes that's compiled against v12.4.0 of HC. Let me know if that fixes this issue.
Note: Released as an RC just in case this breaking change is rolled out of HC, but will a full v9 in a couple of days assuming we've gotta deal with it.

Thanks!
Everything works very well in version 9.0.0-rc.1!


Push ActivationStateMachine tests

This is an old branch that needs to be updated with recent changes from push.

Add a test for #654


superregions are not captured

Check if there is a superregion which has only one spare region and capture that one if it is sourrounded by yours.

Related to #3 and the resulting different strategies

Closing in favour of #6.


[QnA maker] confidence scores bad sorting

When i ask for top 2 answers i get

Answer
Confidence

Answer 1
85

Answer 2
70

but when i ask for top 5 i get (exact same question)

Answer
Confidence

Answer 3
95

Answer 1
85

Answer 2
70

...
...

The correct  answer is Answer 3 but i only get it if i ask for more results.
In my real case i need a top 100 in order to get the correct answer.

Thank you for opening an issue against the Bot Framework Cognitive Services repo. As part of the Bot Framework v4 release, we’ve moved all the Luis and QnA work to platform SDK repo. We will continue to support and offer maintenance updates via this repo.
From now on, https://github.com/Microsoft/botframework-sdk repo will be used as hub, with pointers to all the different SDK languages, tools and samples repos.
As part of this restructuring, we are closing all tickets in this repo.
For defects or feature requests, please create a new issue in the Bot Framework repo found here:
https://github.com/Microsoft/botframework-sdk/issues
For product behavior, how-to, or general understanding questions, please use Stackoverflow.
https://stackoverflow.com/search?q=bot+framework
Thank you.
The Bot Framework Team


How do you will handle the bower shutdown?

Just a question, how do you will handle the bower shutdown and migration? Are you considering switching to npm?

I think "shutdown" is a strong word, from what I've read, bower is still going to be around, they're just not planning any more major improvements to it. As for migrating, the only version of Polymer on npm right now is v2, whereas all of our components currently use v1.9, so we won't be able to migrate to npm until we also migrate to Polymer 2 (which we're currently planning for). I know the Polymer team was also hesitant about npm at first due to its nested vs flat structure (somewhat resolved in v3) and lack of conflict resolution - Rob Dodson talked about that here.

And what about components dependencies that are on bower? Like every polymer components (iron, etc).
Bower site tell to use another tool like webpack.. i think there is no future for him.

While we have regular communication with the Polymer team, I can't speak to their strategy on this, you'd have to ask them.

So, you are dependent on what the polymer team decides.

We use Polymer and Polymer components so we certainly are dependent on what they decide.


About .net core!

I like this project very much, but when I installed it on my work PC recently, it kept saying that the .net core component was missing. What puzzled me was that the software did not indicate what version of the net component was missing. I tried to download several versions on the web, but it didn't work.
The pop-up window prompts "would you like to download...", I click yes, and no browser window pops up.
May I ask which version of .net core components do I need to install?

Finally I found the result! . After I installed the .NET Core 3.1 SDK (v3.1.422), the software worked fine. My system is windows 11 pro system. Give others a reference.

Hey @tiny-andr, thanks for the comment!
The installer is supposed to install the .NET Core Desktop Runtime, but it's possible that the check is different on Windows 11.
Do you recall if the installer prompted you to install .NET Core Desktop Runtime?


Update UI of new record Form for better UX

Update UI of Data entry Form with the following changes:

Have Darker lines around each field and add padding and white space between the data entry fields
Make each data entry field and actual box
make submit and cancel buttons distinct buttons side by side
Make and/submit button green with white text
Make cancel button red with white text
use CHOP colors in form

I started this issue, here is what is currently in branch upgrade_react. It still needs to be improved in terms of look.


Run build when package is installed via git

🚀 Feature request
Current Behavior
Only states of fp-ts that are published to NPM can be installed easily in project.
E.G. npm install<EMAIL_ADDRESS>Desired Behavior
Sometimes it's useful to install a specific commit or generally ref, maybe to test an unpublished feature.
npm install git+https://github.com/gcanti/fp-ts#ed311365eac2e0db67aa25e63702bef189a56a09
Currently, the installation works but no build artefacts are generated.
Suggested Solution
The prepare script is supposed to work for this purpose, however it does not seem to work.
Try e.g. this commit from a fork, it contains a prepare: npm build

Update on this: adding an empty .npmignore to the fp-ts repo makes the prepare script run the build and emit files into dist.
That's already close to what I am looking for. imports now work like fp-ts/dist/Array
I could not figure out how the publishing process puts the dist folder into top level. Is npm publish it run manually from inside dist?


Missing license

This repository doesn't contain a license. Is reuse allowed?

The license is here: https://github.com/openai/evolution-strategies-starter/blob/master/LICENSE


Added .vue file extension at web-extensions-big

…vuejs.org/api/sfc-spec
Describe the added commits
Added .vue file extension at web-extensions-big.txt
Source
https://vuejs.org/api/sfc-spec

Thanks @napz99 ! <3


Error binding to 8080

getting this error:

events.js:160
throw er; // Unhandled 'error' event
^
Error: bind EADDRINUSE <IP_ADDRESS>:8080
at Object.exports._errnoException (util.js:1022:11)
at exports._exceptionWithHostPort (util.js:1045:20)
at cb (net.js:1327:16)
at rr (cluster.js:627:14)
at Worker. (cluster.js:596:9)
at process. (cluster.js:768:8)
at emitTwo (events.js:111:20)
at process.emit (events.js:191:7)
at processEmit [as emit] (/home/mylin/Pools/ZNOMP/znomp/node_modules/signal-exit/index.js:155:32)
at process.nextTick (internal/child_process.js:752:12)
2017-01-19 14:36:40 [Master]    [Website] Website process died, spawning replacement...

seems that i have something running on port 8080 ... changed port in config.json and all worked fine


What Version of .NET is this targeted at?

We have a large Full Framework .NET 4.8 solution with 60+ projects which would benefit greatly from this feature.  The projects have been updated to use the new project format (Sdk="Microsoft.NET.Sdk") to cross compile for .NET 6 or .NET 4.8.
However when I attempt introduce Central Package Management using VS 17.2 and/or Nuget 6.2 it does not pick up the Directory.Packages.props file. All of the Nuget packages get defaulted to their earliest version.
Sample project file can be provided if needed

Document details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 2d000f01-60a3-59c2-e06d-c02c8721fa76
Version Independent ID: 2d000f01-60a3-59c2-e06d-c02c8721fa76
Content: Central Package Management
Content Source: docs/consume-packages/Central-Package-Management.md
Product: nuget
GitHub Login: @JonDouglas
Microsoft Alias: jodou

@mattmckinstry
The feature itself is not related to a specific .NET runtime version, but rather a specific tooling.
As long as you have the correct version of the tooling, it should work.
Please refer to for onboarding.
https://github.com/NuGet/docs.microsoft.com-nuget/blob/main/docs/consume-packages/Central-Package-Management.md#enabling-central-package-management
If you are still having issues, please feel free to file a discussions/issue in the home repo.


Moving the data feed to HsMM from initial stacked data  + starts and ends to more xarray compatible data format

Probably more efficient in terms of speed and RAM usage

Not a good idea as epoched data format needs way more RAM


"Frame Didn't Arrive Within 5000" issue with D455 in Python 3.6 built with Pip

Required Info

Camera Model
D455

Firmware Version
<IP_ADDRESS>

Operating System & Version
{Win 10

Platform
PC

SDK Version
<IP_ADDRESS>13

Language
Python

Computer model
MSI GS 63

Issue Description
This issue is similar to the several others that report the same problem (such as #8691), with the exception that we are using the SDK in Python 3.6 (with Visual Studio as the development environment) 64-bit, with the latest version of pyrealsense2 installed via the command "pip install pyrealsense2". This matches the suggestion for issue #8691, except we are using a slightly older version of Python. Also, the computer makes the "device disconnected" sound whenever it hits the error, as though the sensor has been disconnected. This symptom has also been reported as issue #5181, #2168, #6628, and #927. The particular camera the issue happens with was delivered today, and we used the cable that was included with the sensor.
One of our computers, the MSI GS 63, gets the "Frame Didn't Arrive Within 5000" issue when running the Quick Start code at https://pypi.org/project/pyrealsense2/. But, please note that the error message doesn't appear after 5 seconds as we would expect - it appears after around 15 or 20 seconds. We tried to ensure that there are no resource conflicts for the sensor by adding this hard reset command before that test code:
ctx = rs.context()
devices = ctx.query_devices()
for dev in devices:
dev.hardware_reset()
This allowed the sensor to run and output for a few frames (but definitely not the 100 specified in the code), then it stopped and reported the same "Frame Didn't Arrive Within 5000" error.
This problem does not occur when using a same-model sensor on an MSI GS 65 - that computer runs the code exactly as expected. However, we were able to reproduce the symptoms by using the camera as the video source in a Zoom chat and then running the code, as that creates a resource conflict - however this produced the error report within the expected 5 seconds, rather than the much longer wait on the MSI GS 63 which has the problem.
The apparently-effective advice we've seen in other threads is "try a different computer" - but that's not a viable solution for us. We are not in a position to arbitrarily buy new computers for our employees, especially when we have no way to know if the new computers will be compatible either. And this would be especially problematic when installing systems for customer applications, in which we can't have mysterious compatibility issues. Does anyone know the specific incompatibility? If the issue exists with one RealSense model, will it exist with all of them? Will the issue exist for every request for frames from the sensor, or just some requests?

Hi @Chris45215  Thanks very much for the very detailed information about your problem.  It sounds as though the test code is fine if it can run without problems on your MSI GS 65.  If the newly-arrived D455 camera also works without problems on the MSI GS 65, this suggests that the camera hardware and the currently installed version of its firmware driver are fine too.
Regarding your Zoom video test: it would be expected behaviour for a particular stream type to become unavailable if another application was already 'claiming' ownership of a particular stream from a particular camera and therefore blocking access to it until the program using it closes that stream and 'releases' it for another application to use.
This can be demonstrated by launching a RealSense example program such as rs-capture and then launching the RealSense Viewer and trying to enable the stream that the other application is using - the result is a No Frames Received message being displayed in the Viewer stream panel of the blocked stream.  The same blocking effect is observed if enabling a stream in the Viewer first and then launching an example program - the example is the one whose stream access is blocked.  The rules for accessing a stream are discussed in the SDK's Multi-Streaming Model documentation in the link below.
https://github.com/IntelRealSense/librealsense/blob/master/doc/rs400_support.md#multi-streaming-model
It may be helpful to test the GS 63 computer with a simple Python wrapper example from the SDK called python-tutorial-1-depth.py that is specifically configured to use depth only at a specific resolution and FPS speed, rather than letting the default stream configuration of the particular camera model be applied automatically.  If the program is unable to access the color stream due to the specific depth-only configuration then if the program consistently works on the GS 63, this would lend weight to it being a color-stream related issue.
https://github.com/IntelRealSense/librealsense/blob/master/wrappers/python/examples/python-tutorial-1-depth.py

Thanks @MartyG-RealSense, and I do have an update on the issue.
We were able to get some metadata from a single frame when we added code call .hardreset() to the beginning of the program; it was an attempt to ensure nothing else was monopolizing the sensor. But it hit the same problem after returning the first two lines of printout for the sample program.
Then, one day later - after the computer was ignored overnight - it seems to works fine. We will test it more today to ensure the issue is resolved, and that it doesn't re-appear when pulling the actual frames. We also have another sensor on order for another office, and can see what happens when we plug that in.
I have suspicion that there's some USB issue or driver issue which Microsoft detects and queues a small update for, but doesn't show the update within Windows Update or anywhere else, and it just silently installs that update when the computer is idle. I suspect this because the same thing happened with the Kinect For XBox One when attached to the PC (so technically that product name was "Kinect For Windows v2"), back in 2018. That Kinect issue was resolved by running Windows update twice (and ensuring the last time showed no updates), rebooting, and returning a few days later. That's the best guess I have.
I'm going to leave this issue open in case we encounter the problem when pulling image frames, or if it happens with the next setup. Even if it does resolve after a day, that's far from an ideal solution, as we don't want to promise deliveries of our system (which includes the sensor) to our customers when we don't know the source of the problem and we can't be certain it will work.

Thanks again @Chris45215 for the highly detailed feedback. It's good to hear that you have had apparent positive progress.  It is fine to leave this case open for a further time period whilst you perform additional tests.  Good luck!

Hi @Chris45215  Do you have an update that you can provide about this case, please?  Thanks!

@MartyG-RealSense we do have a bit of an update - we made a version of our program (which uses PCL) that runs on Linux, and started getting the exact same error again. And unfortunately, we can't expect a magic overnight update to fix this one like it does with Windows.
So I still don't know exactly what is causing it, but the issue is definitely there. If it can't be resolved or avoided, it's a critical issue that will prevent us from using these sensors in customer applications. If it's a 'simple' USB port problem, the SDK or driver should throw a clear explanation saying what the problem is and how to fix it.

An instruction that can be useful when the frame queue gets jammed up and is not receiving any new frames is Keep().  This stores frames in memory.  Because it progressively consumes a computer / computing device's memory capacity as it stores the frames, it is usually useful for short-duration recordings such as 30 seconds.
If you run a Keep() test script and do not experience your usual time-out problems during the test recording period, this may provide a clue about the problem that your Python application is having.
https://github.com/IntelRealSense/librealsense/issues/6146

Hi @Chris45215  Do you require further assistance with this case, please?  Thanks!

Our latest update is that we took the RealSense aspects out of our project, because the addition of the pyrealsense2 library created some conflict with the pclpy library (and specifically the Laspy library that it requires) that we are using, and that prevented pclpy from working at all. We use sensors from multiple sources, so we can't depend exclusively on the RealSense, or its own flavor of the PCL components.
Unfortunately, the projects will not run even after pyrealsense2 is removed from the environment.
So, whether that latest proposed solution works or not is still unknown. We need to resolve the PCLpy/Laspy issues first. The specific error that we get is on the first line of the program, "import pclpy", and the error is "type object 'DimensionInfo' has no attribute 'from_dtype'". That error refers to a class within the Laspy library. I have a write-up of that bug in the PCLpy project at https://github.com/davidcaron/pclpy/issues/92

I couldn't find any examples of pyrealsense2 and pclpy / Laspy being used together in a project, which may be a reflection of the difficulties that you have had with combining them together.  pclpy is apparently a binding for the PCL library though, and the RealSense SDK already has its own PCL wrapper (see the link below).  Would it therefore be practical to access PCL through that instead of pclpy?
https://github.com/IntelRealSense/librealsense/tree/master/wrappers/pcl

We need as many features from PCL as possible, like voxelgrids and octrees, which fortunately PCLpy has but it seems that the Realsense PCL wrapper doesn't include all of those - maybe it does, but I couldn't find documentation or examples of it. Regardless, we are using several types of depth cameras and so we can't be tied completely to a Realsense-focused implementation.
We can use C++ rather than Python, but installing the C++ version of PCL for Windows is.... lets just say that there is more documentation saying that it's a nightmare than there is saying how to actually do it successfully.

I reviewed this case completely from the beginning again in search of further insights.  As I have already linked to the very few references available about using a RealSense camera with pclpy, I was not able to make much progress though.
The last idea that I have is that if pclpy's installation is dependent on Conda then it might make a difference if the pyrealsense2 wrapper was built from source code with Conda instead of a pip installation.  The link below contains guides for installing the Python wrapper on Windows with Conda that RealSense users have created.
https://github.com/IntelRealSense/librealsense/issues/1657#issuecomment-388734684
https://rahulvishwakarma.wordpress.com/2019/08/17/realsense-435i-depth-rgb-multi-camera-setup-and-opencv-python-wrapper-intel-realsense-sdk-2-0-compiled-from-source-on-win10/

Hi @Chris45215  Do you require further assistance with this case, please?  Thanks!

Fortunately, I can give good news in the update. We copied the Python environment from one of the computers that was working properly, and it runs without error on the other computers.
I've not been able to find a difference between any of the packages or versions in the environments, but I presume some differences must exist.
We may be able to post a small example of the RealSense working with PCLpy as a public repository at some point, using some of the features that aren't in examples anywhere else.
So, we can probably close this case. The original frame issue resolved itself after a few days; and the Laspy/PyRealsense issue is resolved as long as we have our backup of the working environment. Thanks for your help throughout it; these Heisenbugs are the hardest to handle.

You're very welcome - it's excellent to hear that your situation worked out for you.  Thanks for the update   :)


Automated cherry pick of #4991

Cherry pick of #4991 on release-5.22.

#4991: Add autocomplete="off" to emoji picker input

/cc  @nevyangelova

Will try to auto merge this PR once all tests and checks are passing. This might take up to an hour.

Trying to auto merge this PR.

Pull Request successfully merged
SHA: 8c48bab4783c02ef5ac197355b74edea28688abb


Allows to create an existing Region from a String

as discussed on Slack

@sebsto I can see what you're trying to do with the automatically generating the tests, but given you are using the same method to generate the tests if there was an issue with the generation of the regions, I imagine this same issue would occur with the tests. Then possibly it would not catch the issue.

@sebsto I can see what you're trying to do with the automatically generating the tests, but given you are using the same method to generate the tests if there was an issue with the generation of the regions, I imagine this same issue would occur with the tests. Then possibly it would not catch the issue.

I am well aware of that risk. What would you suggest ? I can rewrite the code that generate the region test (using SSM API for example), it would not be that extensive (we will miss the two ISO regions and China) but that would give an independent test of the Region class.

Sorry for the delay, I have been busy at work. I rewrote the generate-region-test.swift script to generate the test file based on the region list provided by SSM getParametersByPath


Add dynamic-home-page workspace with backstage app and plugin scaffold

Hey, I just made a Pull Request!
A workspace to extract/migrate https://github.com/janus-idp/backstage-showcase/tree/main/plugins/dynamic-home-page
It contains a workspace with the backstage app and a plugin (frontend scaffold) that is marked as private, so that I can migrate the code in a follow-up PR.
Replacing the bundled plugin in 1.4 would be nice, but that's a stretch goal.
:heavy_check_mark: Checklist

[ ] A changeset describing the change and affected packages. (more info)
[ ] Added or Updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)

There are example and template folders with YAML files that the catalog locations use. Do you need these examples for your dynamic homepage?

There are example and template folders with YAML files that the catalog locations use. Do you need these examples for your dynamic homepage?

Do you want this merged as is, or are you proposing adding more files to the PR first?

Done
On Fri, Nov 8, 2024 at 9:22 AM Christoph Jerolimov @.***>
wrote:

Merge as it is, improve later. It should not contain examples, it
could contain the code that is currently in the showcase repo
(Testing answering on the GitHub email)
—
Reply to this email directly, view it on GitHub
https://github.com/redhat-developer/rhdh-plugins/pull/28#issuecomment-2464887669,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABXSDNRY44RW42QHAJZKD3Z7TCJJAVCNFSM6AAAAABRKD4QTSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINRUHA4DONRWHE
.
You are receiving this because your review was requested.Message ID:
@.***>

--
Nick Boldt (he/him/his)
Principal Software Engineer, RHCSA
Productization Lead :: Red Hat Developer Hub
IM: @nickboldt / @nboldt / https://divbyzero.neocities.org
https://red.ht/sig
TRIED. TESTED. TRUSTED. https://redhat.com/trusted
@ @redhatnews https://twitter.com/redhatnews      Red Hat
https://www.facebook.com/RedHatInc
https://www.facebook.com/RedHatInc
“The Only Thing That Is Constant Is Change” - Heraclitus


KeyError: 'musicShelfRenderer'

I see this error with sudo journalctl -u mopidy:
Apr 01 09:11:04 ubuntu mopidy[4449]: Traceback (most recent call last):
Apr 01 09:11:04 ubuntu mopidy[4449]:   File "/usr/local/lib/python3.8/dist-packages/mopidy_ytmusic/library.py", line 168, in browse
Apr 01 09:11:04 ubuntu mopidy[4449]:     res = self.backend.api.get_history()
Apr 01 09:11:04 ubuntu mopidy[4449]:   File "/usr/local/lib/python3.8/dist-packages/ytmusicapi/mixins/library.py", line 202, in get_history
Apr 01 09:11:04 ubuntu mopidy[4449]:     data = content['musicShelfRenderer']['contents']
Apr 01 09:11:04 ubuntu mopidy[4449]: KeyError: 'musicShelfRenderer'

Installed newest release v0.2.3. No artist or listening history shown either. Authentication seemed to work...
Is this extension working for you guys?

Can confirm that the extension works as intended, been using it for months every day.
This looks like Google is rolling out changes to Youtube Music and these are not yet reflected on ytmusicapi.
I'm a little pressed for time today, so I'll investigate further tomorrow.

Thanks for your work and fast reply!
Is there a way to check if the authentication worked?
Let me know if i can assist you or if you need more debug information.

You could try playing back an entire track on mopidy, then going to music.youtube.com and checking your history to see if it shows it having been played last.  If you're not authenticated, then it won't be able to scrobble the track to your ytmusic history.

Okay, so tuns out I'm authenticated. I tried your suggestion. Thanks.
I am using iris as a frontend. Seems like that iris is not capable of showing the artist etc. (under Browse -> Youtube Music). With the Mopidy Mobile App on android it works and I am able to search for artists.
Am I missing something? What frontend for mopidy do you guys use to control the Youtube Music extension? (Sorry, very new to this)

Personally, I use ginger, a front-end of my own making.
I tried several front-ends, and while there are great front-ends on android, desktop front-ends kinda suck.
ginger is beta at best tho, browsing and controlling playback works, but search is broken and I won't have time to fix it for a while.
On the up side, it works as webapp and as a native android app.
Oh and you can't control volume with it currently. I usually adjust volume directly on the speakers, so I forgot to implement it in ginger... :sweat_smile:

Okay, so tuns out I'm authenticated. I tried your suggestion. Thanks.
I am using iris as a frontend. Seems like that iris is not capable of showing the artist etc. (under Browse -> Youtube Music). With the Mopidy Mobile App on android it works and I am able to search for artists.
Am I missing something? What frontend for mopidy do you guys use to control the Youtube Music extension? (Sorry, very new to this)

I’m new as well. I haven’t figured out how to start music from Iris, so I use Mopidy on desktop to start music, and can then click next/previous on my Iris client.

What do you mean by Mopidy on desktop? What kind of application is this?

Something like Cantata, it's an MPD client, but last time I checked it worked for Mopidy pretty well. Looks rather dated tho.
To use it with Mopidy, you need to install Mopidy-MPD plugin.

What do you mean by Mopidy on desktop? What kind of application is this?

It was one of the other web UI’s I think. I’ll double check next time that I boot up.
My goal is to have an RPi as a stand-alone unit in my car, so I might test Ginger. Otherwise Iris looks nice but doesn’t integrate well with yt.

Thanks @OzymandiasTheGreat , I'll might also test Ginger.
@DIYglenn It appears that I am able to search the Youtube Music Library in Iris with Search -> and then add YtMusic to the Sources. Playing directly a track works but when selecting an album the tracks are missing...


Add documentation for sweep

Currently we don't document the case where a channel is being closed and how apps should handle this case to sweep the user funds.

Closed by https://github.com/breez/breez-sdk-docs/pull/110


Update 1-launch.md

I got confused about where to find this command - just adding a note to help folks in future

Thanks for this 😁  - added into #50 - so gonna close this in favor of that one. 🙏🏼


spliceColumns problem when the number of columns are important

Hello,
I have those columns in my files :
RACK | Patch panel | Port | 09/2015 | 10/2015 | 11/2015 | 12/2015 | 01/2016 | 02/2016 | 03/2016 | 04/2016 | 05/2016 | 06/2016 | 07/2016 | 08/2016 | 09/2016 | 10/2016 | 11/2016 | 12/2016 | 01/2017 | 02/2017 | 03/2017 | 04/2017 | 05/2017 | 06/2017 | 07/2017 | 08/2017 | 09/2017 | 10/2017 | 11/2017 | 12/2017 | 01/2018 | 02/2018
I have to delete all the columns before 02/2017
So I do this : sheet.spliceColumns(4, 17);  To delete 17 columns from the 4th one.
But the result is this :
02/2017 | 03/2017 | 04/2017 | 05/2017 | 06/2017 | 07/2017 | 08/2017 | 09/2017 | 10/2017 | 11/2017 | 12/2017 | 01/2018 | 02/2018 | 10/2016 | 11/2016 | 12/2016 | 01/2017
4 columns are "added", "still" at the end.
But if I do 2 spliceColumns, like this :
sheet.spliceColumns(4, 10);
sheet.spliceColumns(4, 7);
The result is good :
RACK | Patch panel | Port | 02/2017 | 03/2017 | 04/2017 | 05/2017 | 06/2017 | 07/2017 | 08/2017 | 09/2017 | 10/2017 | 11/2017 | 12/2017 | 01/2018 | 02/2018
Thanks for your help.

Fixed in v1.0.1


Error: Error creating resource: [message] fopen(http://<IP_ADDRESS>:8545): failed to open stream: Connection timed out [file] /var/www/html/identity/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php [line] 323

Hello, I've created my ethereum private network using AWS. So, the <IP_ADDRESS> it's the available url to interact with my network, I want add a new account through $personal->newAccount() but I need also to see the wallet address of the new account.
My code:
$web3 = new Web3(new HttpProvider(new HttpRequestManager('http://<IP_ADDRESS>:8545', 0.1)));
This shows me the current geth version of my private network, and it's working.
$web3->clientVersion(function ($err, $version) {
if ($err !== null) {
// do something
return;
} else {
print_r($version);
}
});
How I can do to add a new account and see the ether wallet?
If I use this, it gives me the error of open stream
$newAccount = '';
    $web3->personal->newAccount('123456', function ($err, $account) use (&$newAccount) {
        if ($err !== null) {
            echo 'Error: ' . $err->getMessage();
            return;
        } else {
           $newAccount = $account;
            echo 'New account: ' . $account . PHP_EOL;
            exit();
        }

    });

Hi @fabiananillo
Did you check the security group in your AWS?
It might happen when you not to add your ip to white ip list.

@sc0Vu Hello,
I have Custom TCP for anywhere in port 8545 and SSH just for my ip. I need add a new rule?

@fabiananillo Hi,
it's a bit too late, but this may help others.
I had the same problem and solved it installing curl so guzzle don't have to use fopen.
I hope that helps!

@fabiananillo Guess that the timeout you set was bit low (0.1 seconds). You can try to set higher timeout.

@fabiananillo Please set timeout into 5 seconds instead of 0.1 (it works for me).


Assert no duplicate TopicPartition entries with manual assignment

Currently inconsistent - we don't check for duplicates when specifying @TopicPartion.partition(), but we do when specifying @TopicPartition.partitionOffset().
Introducing the check now would be a breaking change; defer until 2.7.

This is not an issue; Kafka ignores dups.

This is not an issue; Kafka ignores dups.


Rename project/repository to something more fitting

8963075856714d88cc9bc4445d0ea6a141cb4a9e adds support for terminologies and "mappings-api" is not an appropriate name anymore.

How about jskos-server? It serves different kinds of records in JSKOS format via JSKOS API (the latter not formally specified yet but implemented at api.dante.gbv.de


Design Doc Day 1

[x] Story

[x] General backstory
[x] Where the player is going
[x] Levels, enemy and dialogue
[x] Outcome of level

[x] Level Design

[x] Player Vehicles

[x] How it is obtained & lost
[x] History of the vehicle

[x] Setting
[x] Enemy Types
[x] Bosses

[x] Characteristic
[x] Motivation

[x] Gameplay

[x] Win condition
[x] Score
[x] Upgrades/Shop
[x] Game over

Tasks completed, awaiting website/pages/docs for upload


Update key-management.md

Corrects the --pem-password parameter for az keyvault key import, see reference.

@msmbaldwin

Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.

NOTE: please update the author metadata value to msmbaldwin . thanks!
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

I sent email to the content owner today.
@MicrosoftDocs/public-repo-pr-review-team

Hi, @reysic, and thank you for your contribution -- we really appreciate it! #sign-off


FILETIME struct is missing Debug impl

https://docs.rs/winapi/*/x86_64-pc-windows-msvc/winapi/shared/minwindef/struct.FILETIME.html

A PR for this happened and was approved.


code

https://github.com/dkrivoruchko/ScreenStream/commit/c028fa9ad8732a6b06f59f86a9fac68b7b9f9dd6

<EMAIL_ADDRESS>delete

<EMAIL_ADDRESS>


[EnterpriseBotTemplate][C#] Unable to route based on entities and not intents

Project
Name: <!--Enterprise Bot Template>
Language:
Description
I have been trying to use the enterprise template to start a dialog based on an entity in LUIS not based on an intent using the link below and I have been unable to get this working.
https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-howto-v4-luis?view=azure-bot-service-4.0&tabs=cs
To Reproduce

Expected behavior

Screenshots

Additional context

@mlipinski - Thank you for your question. I would like to help but I need some more information.

Can you please share the code you're trying to use to route based on entities?
Is the problem that your bot is unable to recognize the entities correctly? Or is the problem that you don't know what to do with the entity once you've recognized it?

The issue is that the bot is unable to recognize the entities correctly.
Here is the code I have been working with, I have tried a bunch of different options but to no avail.
private string ParseLuisForEntities(RecognizerResult recognizerResult)
{
var result = string.Empty;
        // recognizerResult.Entities returns type JObject.
        foreach (var entity in recognizerResult.Entities)
        {
            // Parse JObject for a known entity types: Appointment, Meeting, and Schedule.
            var hardwareFound = JObject.Parse(entity.Value.ToString())["Hardware"];
            var networkFound = JObject.Parse(entity.Value.ToString())["Networking"];
            var techappFound = JObject.Parse(entity.Value.ToString())["TechApplication"];

            // We will return info on the first entity found.
            if (techappFound != null)
            {
                // use JsonConvert to convert entity.Value to a dynamic object.
                dynamic o = JsonConvert.DeserializeObject<dynamic>(entity.Value.ToString());
                if (o.Appointment[0] != null)
                {
                    // Find and return the entity type and score.
                    var entType = o.Appointment[0].type;
                    var entScore = o.Appointment[0].score;
                    result = "Entity: " + entType + ", Score: " + entScore + ".";

                    return result;
                }
            }

            if (hardwareFound != null)
            {
                // use JsonConvert to convert entity.Value to a dynamic object.
                dynamic o = JsonConvert.DeserializeObject<dynamic>(entity.Value.ToString());
                if (o.Meeting[0] != null)
                {
                    // Find and return the entity type and score.
                    var entType = o.Meeting[0].type;
                    var entScore = o.Meeting[0].score;
                    result = "Entity: " + entType + ", Score: " + entScore + ".";

                    return result;
                }
            }

            if (networkFound != null)
            {
                // use JsonConvert to convert entity.Value to a dynamic object.
                dynamic o = JsonConvert.DeserializeObject<dynamic>(entity.Value.ToString());
                if (o.Schedule[0] != null)
                {
                    // Find and return the entity type and score.
                    var entType = o.Schedule[0].type;
                    var entScore = o.Schedule[0].score;
                    result = "Entity: " + entType + ", Score: " + entScore + ".";

                    return result;
                }
            }
        }

        // No entities were found, empty string returned.
        return result;
    }

    protected override async Task RouteAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken))
    {
        // Check dispatch result
      //  var luiskey = "99531766250e403db35a0b23de6690d6";
        var dispatchResult = await _services.DispatchRecognizer.RecognizeAsync<Dispatch>(dc, CancellationToken.None);
        var entity = dispatchResult.Entities;

     //  var entityFound = ParseLuisForEntities(dispatchResult2;
        var intent = dispatchResult.TopIntent().intent;
     //   var intent = dispatchResult.TopIntent().intent;
      //  var techapp = entityFound;

        if (intent == Dispatch.Intent.l_general)
        {
            // If dispatch result is general luis model
            _services.LuisServices.TryGetValue("general", out var luisService);

            if (luisService == null)
            {
                throw new Exception("The specified LUIS Model could not be found in your Bot Services configuration.");
            }
            else
            {

                var result = await luisService.RecognizeAsync<General>(dc, CancellationToken.None);
                var generalIntent = result?.TopIntent().intent;

                // Narrowed it down to these two lines.

                // figure it out.

                switch (generalIntent)
                {
                    case General.Intent.LiveChat:
                        {
                            // send live chat response
                            await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.LiveChat);
                            await dc.CancelAllDialogsAsync();
                            await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed);
                            break;
                        }

                    case General.Intent.Escalate:
                        {
                            // start escalate dialog
                            await dc.BeginDialogAsync(nameof(EscalateDialog));
                            break;
                        }
                    case General.Intent.Onboarding:
                        {
                            // start onboarding dialog
                            await dc.BeginDialogAsync(nameof(OnboardingDialog));
                            break;
                        }
                    case General.Intent.Incident:
                        {
                            // start the service now create an incident dialog
                            await dc.BeginDialogAsync(nameof(ServiceNowIncidentDialog));
                            break;
                        }
                    case General.Intent.SNSearchKB:
                        {

                            //  entity = entityFound;
                           // string entity = "sharepoint";
                            await dc.BeginDialogAsync(nameof(ServiceNowSearchDialog));
                            break;
                        }
                    case General.Intent.SNSearchRequest:
                        {
                            // start the ServiceNow KB Search Request Dialog
                            await dc.BeginDialogAsync(nameof(ServiceNowSearchRequest));
                            break;
                        }
                    case General.Intent.SNOutages:
                        {
                            // Check Service Now for any Outages  Dialog
                            await dc.BeginDialogAsync(nameof(SNOutagesDialog));
                            break;
                        }
                    case General.Intent.BotCounters:
                        {
                            // Show the bot counters
                            await dc.BeginDialogAsync(nameof(CountersDialog));
                            break;
                        }
                    case General.Intent.GuidedMenu:
                        {
                            // start the Guided Menu
                            await dc.BeginDialogAsync(nameof(GuidedMenuDialog));
                            break;
                        }
                    case General.Intent.Help:
                        {
                            // send help response
                            await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Help);
                            await dc.CancelAllDialogsAsync();
                            await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed);
                            break;

                            // Cancel any active dialogs on the stack
                            await dc.CancelAllDialogsAsync();
                            break;
                        }
                    case General.Intent.SDHelp:
                        {
                            // send help response
                            await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.SDHelp);
                            await dc.CancelAllDialogsAsync();
                            await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed);
                            break;
                        }
                    case General.Intent.Auth:
                        {
                            // Authenticates the user through Azure AD
                            await dc.BeginDialogAsync(nameof(AuthenticationDialog));
                            break;
                        }
                    case General.Intent.GraphClient:
                        {
                            // Calls the graph client
                            await dc.BeginDialogAsync(nameof(GraphClient.GetMe));
                            break;
                        }

                    case General.Intent.None:
                    default:
                        {
                            // No intent was identified, send confused message
                            await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused);
                            break;
                        }
                }
            }
        }
        else if (intent == Dispatch.Intent.q_chitchat)
        {
            _services.QnAServices.TryGetValue("chitchat", out var qnaService);

            if (qnaService == null)
            {
                throw new Exception("The specified QnA Maker Service could not be found in your Bot Services configuration.");
            }
            else
            {
                var answers = await qnaService.GetAnswersAsync(dc.Context);

                if (answers != null && answers.Count() > 0)
                {
                    await dc.Context.SendActivityAsync(answers[0].Answer);
                }
            }
        }
        else if (intent == Dispatch.Intent.q_servicedesk)
        {
            _services.QnAServices.TryGetValue("faq", out var qnaService);
           // await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.QnaMaker);
            if (qnaService == null)
            {
                throw new Exception("The specified QnA Maker Service could not be found in your Bot Services configuration.");
            }
            else
            {
                var answers = await qnaService.GetAnswersAsync(dc.Context);

                if (answers != null && answers.Count() > 0)
                {

                    await dc.Context.SendActivityAsync(answers[0].Answer);
                }

                string logcounter = "QNA";
                UpdateCounters runstats = new UpdateCounters();
                await runstats.UpdateCounters2(logcounter);

                await dc.BeginDialogAsync(nameof(FeedbackDialog));

            }
        }
        else
        {
            await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Unknown);
        }

    }

From: Kyle Delaney<EMAIL_ADDRESS>Sent: Tuesday, April 30, 2019 2:37 PM
To: Microsoft/AI<EMAIL_ADDRESS>Cc: Lipinski, Matt T. (RET-DAY<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [Microsoft/AI] [EnterpriseBotTemplate][C#] Unable to route based on entities and not intents (#1196)
*** External email: use caution ***
@mlipinskihttps://github.com/mlipinski - Thank you for your question. I would like to help but I need some more information.

Can you please share the code you're trying to use to route based on entities?
Is the problem that your bot is unable to recognize the entities correctly? Or is the problem that you don't know what to do with the entity once you've recognized it?

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/Microsoft/AI/issues/1196#issuecomment-488065872, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABMHDSUSRYUEMRNKCE5H3VLPTCGTPANCNFSM4HJLQBMA.

private string ParseLuisForEntities(RecognizerResult recognizerResult)
{
	var result = string.Empty;

	// recognizerResult.Entities returns type JObject.
	foreach (var entity in recognizerResult.Entities)
	{
		// Parse JObject for a known entity types: Appointment, Meeting, and Schedule.
		var hardwareFound = JObject.Parse(entity.Value.ToString())["Hardware"];
		var networkFound = JObject.Parse(entity.Value.ToString())["Networking"];
		var techappFound = JObject.Parse(entity.Value.ToString())["TechApplication"];

		// We will return info on the first entity found.
		if (techappFound != null)
		{
			// use JsonConvert to convert entity.Value to a dynamic object.
			dynamic o = JsonConvert.DeserializeObject<dynamic>(entity.Value.ToString());
			if (o.Appointment[0] != null)
			{
				// Find and return the entity type and score.
				var entType = o.Appointment[0].type;
				var entScore = o.Appointment[0].score;
				result = "Entity: " + entType + ", Score: " + entScore + ".";

				return result;
			}
		}

		if (hardwareFound != null)
		{
			// use JsonConvert to convert entity.Value to a dynamic object.
			dynamic o = JsonConvert.DeserializeObject<dynamic>(entity.Value.ToString());
			if (o.Meeting[0] != null)
			{
				// Find and return the entity type and score.
				var entType = o.Meeting[0].type;
				var entScore = o.Meeting[0].score;
				result = "Entity: " + entType + ", Score: " + entScore + ".";

				return result;
			}
		}

		if (networkFound != null)
		{
			// use JsonConvert to convert entity.Value to a dynamic object.
			dynamic o = JsonConvert.DeserializeObject<dynamic>(entity.Value.ToString());
			if (o.Schedule[0] != null)
			{
				// Find and return the entity type and score.
				var entType = o.Schedule[0].type;
				var entScore = o.Schedule[0].score;
				result = "Entity: " + entType + ", Score: " + entScore + ".";

				return result;
			}
		}
	}

	// No entities were found, empty string returned.
	return result;
}

protected override async Task RouteAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken))
{
	// Check dispatch result
	//  var luiskey = "99531766250e403db35a0b23de6690d6";
	var dispatchResult = await _services.DispatchRecognizer.RecognizeAsync<Dispatch>(dc, CancellationToken.None);
	var entity = dispatchResult.Entities;

	//  var entityFound = ParseLuisForEntities(dispatchResult2;
	var intent = dispatchResult.TopIntent().intent;
	//   var intent = dispatchResult.TopIntent().intent;
	//  var techapp = entityFound;

	if (intent == Dispatch.Intent.l_general)
	{
		// If dispatch result is general luis model
		_services.LuisServices.TryGetValue("general", out var luisService);

		if (luisService == null)
		{
			throw new Exception("The specified LUIS Model could not be found in your Bot Services configuration.");
		}
		else
		{

			var result = await luisService.RecognizeAsync<General>(dc, CancellationToken.None);
			var generalIntent = result?.TopIntent().intent;

			// Narrowed it down to these two lines.
			// figure it out.

			switch (generalIntent)
			{
				case General.Intent.LiveChat:
					{
						// send live chat response
						await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.LiveChat);
						await dc.CancelAllDialogsAsync();
						await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed);
						break;
					}
				case General.Intent.Escalate:
					{
						// start escalate dialog
						await dc.BeginDialogAsync(nameof(EscalateDialog));
						break;
					}
				case General.Intent.Onboarding:
					{
						// start onboarding dialog
						await dc.BeginDialogAsync(nameof(OnboardingDialog));
						break;
					}
				case General.Intent.Incident:
					{
						// start the service now create an incident dialog
						await dc.BeginDialogAsync(nameof(ServiceNowIncidentDialog));
						break;
					}
				case General.Intent.SNSearchKB:
					{

						//  entity = entityFound;
						// string entity = "sharepoint";
						await dc.BeginDialogAsync(nameof(ServiceNowSearchDialog));
						break;
					}
				case General.Intent.SNSearchRequest:
					{
						// start the ServiceNow KB Search Request Dialog
						await dc.BeginDialogAsync(nameof(ServiceNowSearchRequest));
						break;
					}
				case General.Intent.SNOutages:
					{
						// Check Service Now for any Outages  Dialog
						await dc.BeginDialogAsync(nameof(SNOutagesDialog));
						break;
					}
				case General.Intent.BotCounters:
					{
						// Show the bot counters
						await dc.BeginDialogAsync(nameof(CountersDialog));
						break;
					}
				case General.Intent.GuidedMenu:
					{
						// start the Guided Menu
						await dc.BeginDialogAsync(nameof(GuidedMenuDialog));
						break;
					}
				case General.Intent.Help:
					{
						// send help response
						await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Help);
						await dc.CancelAllDialogsAsync();
						await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed);
						break;

						// Cancel any active dialogs on the stack
						await dc.CancelAllDialogsAsync();
						break;
					}
				case General.Intent.SDHelp:
					{
						// send help response
						await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.SDHelp);
						await dc.CancelAllDialogsAsync();
						await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed);
						break;
					}
				case General.Intent.Auth:
					{
						// Authenticates the user through Azure AD
						await dc.BeginDialogAsync(nameof(AuthenticationDialog));
						break;
					}
				case General.Intent.GraphClient:
					{
						// Calls the graph client
						await dc.BeginDialogAsync(nameof(GraphClient.GetMe));
						break;
					}

				case General.Intent.None:
				default:
					{
						// No intent was identified, send confused message
						await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused);
						break;
					}
			}
		}
	}
	else if (intent == Dispatch.Intent.q_chitchat)
	{
		_services.QnAServices.TryGetValue("chitchat", out var qnaService);

		if (qnaService == null)
		{
			throw new Exception("The specified QnA Maker Service could not be found in your Bot Services configuration.");
		}
		else
		{
			var answers = await qnaService.GetAnswersAsync(dc.Context);

			if (answers != null && answers.Count() > 0)
			{
				await dc.Context.SendActivityAsync(answers[0].Answer);
			}
		}
	}
	else if (intent == Dispatch.Intent.q_servicedesk)
	{
		_services.QnAServices.TryGetValue("faq", out var qnaService);
		// await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.QnaMaker);
		if (qnaService == null)
		{
			throw new Exception("The specified QnA Maker Service could not be found in your Bot Services configuration.");
		}
		else
		{
			var answers = await qnaService.GetAnswersAsync(dc.Context);

			if (answers != null && answers.Count() > 0)
			{

				await dc.Context.SendActivityAsync(answers[0].Answer);
			}

			string logcounter = "QNA";
			UpdateCounters runstats = new UpdateCounters();
			await runstats.UpdateCounters2(logcounter);

			await dc.BeginDialogAsync(nameof(FeedbackDialog));

		}
	}
	else
	{
		await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Unknown);
	}
}

@mlipinski - I've gone ahead and moved your code to my own comment so that it can be formatted correctly. Please make sure you post code directly on GitHub because email replies do not support markdown.

What type of entity are you trying to route based on?

Lists currently

Can we remove the key please from the code? Sorry I didn’t realize it was in there.
From: Kyle Delaney<EMAIL_ADDRESS>Sent: Tuesday, April 30, 2019 4:38 PM
To: Microsoft/AI<EMAIL_ADDRESS>Cc: Lipinski, Matt T. (RET-DAY<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [Microsoft/AI] [EnterpriseBotTemplate][C#] Unable to route based on entities and not intents (#1196)
*** External email: use caution ***
What type of entity are you trying to route based on?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/Microsoft/AI/issues/1196#issuecomment-488106048, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABMHDSULZZ64EPZUY6D2NHTPTCU2TANCNFSM4HJLQBMA.

private string ParseLuisForEntities(RecognizerResult recognizerResult)
{
    var result = string.Empty;

    // recognizerResult.Entities returns type JObject.
    foreach (var entity in recognizerResult.Entities)
    {
        // Parse JObject for a known entity types: Appointment, Meeting, and Schedule.
        var hardwareFound = JObject.Parse(entity.Value.ToString())["Hardware"];
        var networkFound = JObject.Parse(entity.Value.ToString())["Networking"];
        var techappFound = JObject.Parse(entity.Value.ToString())["TechApplication"];

        // We will return info on the first entity found.
        if (techappFound != null)
        {
            // use JsonConvert to convert entity.Value to a dynamic object.
            dynamic o = JsonConvert.DeserializeObject<dynamic>(entity.Value.ToString());
            if (o.Appointment[0] != null)
            {
                // Find and return the entity type and score.
                var entType = o.Appointment[0].type;
                var entScore = o.Appointment[0].score;
                result = "Entity: " + entType + ", Score: " + entScore + ".";

                return result;
            }
        }

        if (hardwareFound != null)
        {
            // use JsonConvert to convert entity.Value to a dynamic object.
            dynamic o = JsonConvert.DeserializeObject<dynamic>(entity.Value.ToString());
            if (o.Meeting[0] != null)
            {
                // Find and return the entity type and score.
                var entType = o.Meeting[0].type;
                var entScore = o.Meeting[0].score;
                result = "Entity: " + entType + ", Score: " + entScore + ".";

                return result;
            }
        }

        if (networkFound != null)
        {
            // use JsonConvert to convert entity.Value to a dynamic object.
            dynamic o = JsonConvert.DeserializeObject<dynamic>(entity.Value.ToString());
            if (o.Schedule[0] != null)
            {
                // Find and return the entity type and score.
                var entType = o.Schedule[0].type;
                var entScore = o.Schedule[0].score;
                result = "Entity: " + entType + ", Score: " + entScore + ".";

                return result;
            }
        }
    }

    // No entities were found, empty string returned.
    return result;
}

protected override async Task RouteAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken))
{
    // Check dispatch result
    var dispatchResult = await _services.DispatchRecognizer.RecognizeAsync<Dispatch>(dc, CancellationToken.None);
    var entity = dispatchResult.Entities;

    //  var entityFound = ParseLuisForEntities(dispatchResult2;
    var intent = dispatchResult.TopIntent().intent;
    //   var intent = dispatchResult.TopIntent().intent;
    //  var techapp = entityFound;

    if (intent == Dispatch.Intent.l_general)
    {
        // If dispatch result is general luis model
        _services.LuisServices.TryGetValue("general", out var luisService);

        if (luisService == null)
        {
            throw new Exception("The specified LUIS Model could not be found in your Bot Services configuration.");
        }
        else
        {

            var result = await luisService.RecognizeAsync<General>(dc, CancellationToken.None);
            var generalIntent = result?.TopIntent().intent;

            // Narrowed it down to these two lines.
            // figure it out.

            switch (generalIntent)
            {
                case General.Intent.LiveChat:
                    {
                        // send live chat response
                        await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.LiveChat);
                        await dc.CancelAllDialogsAsync();
                        await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed);
                        break;
                    }
                case General.Intent.Escalate:
                    {
                        // start escalate dialog
                        await dc.BeginDialogAsync(nameof(EscalateDialog));
                        break;
                    }
                case General.Intent.Onboarding:
                    {
                        // start onboarding dialog
                        await dc.BeginDialogAsync(nameof(OnboardingDialog));
                        break;
                    }
                case General.Intent.Incident:
                    {
                        // start the service now create an incident dialog
                        await dc.BeginDialogAsync(nameof(ServiceNowIncidentDialog));
                        break;
                    }
                case General.Intent.SNSearchKB:
                    {

                        //  entity = entityFound;
                        // string entity = "sharepoint";
                        await dc.BeginDialogAsync(nameof(ServiceNowSearchDialog));
                        break;
                    }
                case General.Intent.SNSearchRequest:
                    {
                        // start the ServiceNow KB Search Request Dialog
                        await dc.BeginDialogAsync(nameof(ServiceNowSearchRequest));
                        break;
                    }
                case General.Intent.SNOutages:
                    {
                        // Check Service Now for any Outages  Dialog
                        await dc.BeginDialogAsync(nameof(SNOutagesDialog));
                        break;
                    }
                case General.Intent.BotCounters:
                    {
                        // Show the bot counters
                        await dc.BeginDialogAsync(nameof(CountersDialog));
                        break;
                    }
                case General.Intent.GuidedMenu:
                    {
                        // start the Guided Menu
                        await dc.BeginDialogAsync(nameof(GuidedMenuDialog));
                        break;
                    }
                case General.Intent.Help:
                    {
                        // send help response
                        await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Help);
                        await dc.CancelAllDialogsAsync();
                        await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed);
                        break;

                        // Cancel any active dialogs on the stack
                        await dc.CancelAllDialogsAsync();
                        break;
                    }
                case General.Intent.SDHelp:
                    {
                        // send help response
                        await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.SDHelp);
                        await dc.CancelAllDialogsAsync();
                        await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed);
                        break;
                    }
                case General.Intent.Auth:
                    {
                        // Authenticates the user through Azure AD
                        await dc.BeginDialogAsync(nameof(AuthenticationDialog));
                        break;
                    }
                case General.Intent.GraphClient:
                    {
                        // Calls the graph client
                        await dc.BeginDialogAsync(nameof(GraphClient.GetMe));
                        break;
                    }

                case General.Intent.None:
                default:
                    {
                        // No intent was identified, send confused message
                        await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Confused);
                        break;
                    }
            }
        }
    }
    else if (intent == Dispatch.Intent.q_chitchat)
    {
        _services.QnAServices.TryGetValue("chitchat", out var qnaService);

        if (qnaService == null)
        {
            throw new Exception("The specified QnA Maker Service could not be found in your Bot Services configuration.");
        }
        else
        {
            var answers = await qnaService.GetAnswersAsync(dc.Context);

            if (answers != null && answers.Count() > 0)
            {
                await dc.Context.SendActivityAsync(answers[0].Answer);
            }
        }
    }
    else if (intent == Dispatch.Intent.q_servicedesk)
    {
        _services.QnAServices.TryGetValue("faq", out var qnaService);
        // await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.QnaMaker);
        if (qnaService == null)
        {
            throw new Exception("The specified QnA Maker Service could not be found in your Bot Services configuration.");
        }
        else
        {
            var answers = await qnaService.GetAnswersAsync(dc.Context);

            if (answers != null && answers.Count() > 0)
            {

                await dc.Context.SendActivityAsync(answers[0].Answer);
            }

            string logcounter = "QNA";
            UpdateCounters runstats = new UpdateCounters();
            await runstats.UpdateCounters2(logcounter);

            await dc.BeginDialogAsync(nameof(FeedbackDialog));

        }
    }
    else
    {
        await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Unknown);
    }
}

@mlipinski - Let's say you have a list entity like this:

If you want to modify General.cs to accommodate such a list entity, you can include the entity in the General._Entities class:
public class _Entities
{
    // Simple entities
    public string[] DirectionalReference;

    // List entities
    public string[][] PacificStates;

    // Built-in entities
    public double[] number;
    public double[] ordinal;

Then your RouteAsync method can switch on that entity as you please:
var result = await luisService.RecognizeAsync<General>(dc, CancellationToken.None);
var entity = result.Entities.PacificStates?.FirstOrDefault()?.FirstOrDefault();

switch (entity)
{
    case "WA":
        await dc.Context.SendActivityAsync("The Bot Framework is made in Washington State.");
        break;
    case "CA":
        await dc.Context.SendActivityAsync("California is the most populated state in the US.");
        break;
    default:
        await dc.Context.SendActivityAsync($"{entity} sounds like a nice state.");
        break;
}

Depending on the intents you've incorporated your list entity into, this could produce the following result:

Does this resolve your issue?

That should do it, I will test it out tomorrow and let you know.
From: Kyle Delaney<EMAIL_ADDRESS>Sent: Wednesday, May 1, 2019 12:47 PM
To: Microsoft/AI<EMAIL_ADDRESS>Cc: Lipinski, Matt T. (RET-DAY<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [Microsoft/AI] [EnterpriseBotTemplate][C#] Unable to route based on entities and not intents (#1196)
*** External email: use caution ***
@mlipinskihttps://github.com/mlipinski - Let's say you have a list entity like this:
[image]https://user-images.githubusercontent.com/41968495/57028526-2e085100-6bf4-11e9-96bd-6b442444a868.png
If you want to modify General.cs to accommodate such a list entity, you can include the entity in the General._Entities class:
public class _Entities
{
// Simple entities

public string[] DirectionalReference;

// List entities

public string[][] PacificStates;

// Built-in entities

public double[] number;

public double[] ordinal;

Then your RouteAsync method can switch on that entity as you please:
var result = await luisService.RecognizeAsync(dc, CancellationToken.None);
var entity = result.Entities.PacificStates?.FirstOrDefault()?.FirstOrDefault();
switch (entity)
{
case "WA":

    await dc.Context.SendActivityAsync("The Bot Framework is made in Washington State.");

    break;

case "CA":

    await dc.Context.SendActivityAsync("California is the most populated state in the US.");

    break;

default:

    await dc.Context.SendActivityAsync($"{entity} sounds like a nice state.");

    break;

}
Depending on the intents you've incorporated your list entity into, this could produce the following result:
[image]https://user-images.githubusercontent.com/41968495/57028875-12ea1100-6bf5-11e9-8f32-76cedcf4b3e3.png
Does this resolve your issue?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/Microsoft/AI/issues/1196#issuecomment-488338290, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABMHDSR6FM6YRDKIQIPG4ITPTHCO7ANCNFSM4HJLQBMA.

Kyle,
When I try to use the second line it complains about, so I am using the _services that comes with the enterprise bot which doesn’t have the “RecognizeAsync” within TelemetryLuisRecognizer.  So should I use luisService and if so what does entail?
Your line
var result = await luisService.RecognizeAsync(dc, CancellationToken.None);
My line
var result = await _services.LuisServices.RecognizeAsync(dc, CancellationToken.None);
Either we need to add RecognizeAsync to TelemetryLuisRecognizer or I need to configure luisService.
Matt…
From: Kyle Delaney<EMAIL_ADDRESS>Sent: Wednesday, May 1, 2019 12:47 PM
To: Microsoft/AI<EMAIL_ADDRESS>Cc: Lipinski, Matt T. (RET-DAY<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [Microsoft/AI] [EnterpriseBotTemplate][C#] Unable to route based on entities and not intents (#1196)
*** External email: use caution ***
@mlipinskihttps://github.com/mlipinski - Let's say you have a list entity like this:
[image]https://user-images.githubusercontent.com/41968495/57028526-2e085100-6bf4-11e9-96bd-6b442444a868.png
If you want to modify General.cs to accommodate such a list entity, you can include the entity in the General._Entities class:
public class _Entities
{
// Simple entities

public string[] DirectionalReference;

// List entities

public string[][] PacificStates;

// Built-in entities

public double[] number;

public double[] ordinal;

Then your RouteAsync method can switch on that entity as you please:
var result = await luisService.RecognizeAsync(dc, CancellationToken.None);
var entity = result.Entities.PacificStates?.FirstOrDefault()?.FirstOrDefault();
switch (entity)
{
case "WA":

    await dc.Context.SendActivityAsync("The Bot Framework is made in Washington State.");

    break;

case "CA":

    await dc.Context.SendActivityAsync("California is the most populated state in the US.");

    break;

default:

    await dc.Context.SendActivityAsync($"{entity} sounds like a nice state.");

    break;

}
Depending on the intents you've incorporated your list entity into, this could produce the following result:
[image]https://user-images.githubusercontent.com/41968495/57028875-12ea1100-6bf5-11e9-8f32-76cedcf4b3e3.png
Does this resolve your issue?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/Microsoft/AI/issues/1196#issuecomment-488338290, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABMHDSR6FM6YRDKIQIPG4ITPTHCO7ANCNFSM4HJLQBMA.

Nevermind, I found luisServices.
From: Kyle Delaney<EMAIL_ADDRESS>Sent: Wednesday, May 1, 2019 12:47 PM
To: Microsoft/AI<EMAIL_ADDRESS>Cc: Lipinski, Matt T. (RET-DAY<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [Microsoft/AI] [EnterpriseBotTemplate][C#] Unable to route based on entities and not intents (#1196)
*** External email: use caution ***
@mlipinskihttps://github.com/mlipinski - Let's say you have a list entity like this:
[image]https://user-images.githubusercontent.com/41968495/57028526-2e085100-6bf4-11e9-96bd-6b442444a868.png
If you want to modify General.cs to accommodate such a list entity, you can include the entity in the General._Entities class:
public class _Entities
{
// Simple entities

public string[] DirectionalReference;

// List entities

public string[][] PacificStates;

// Built-in entities

public double[] number;

public double[] ordinal;

Then your RouteAsync method can switch on that entity as you please:
var result = await luisService.RecognizeAsync(dc, CancellationToken.None);
var entity = result.Entities.PacificStates?.FirstOrDefault()?.FirstOrDefault();
switch (entity)
{
case "WA":

    await dc.Context.SendActivityAsync("The Bot Framework is made in Washington State.");

    break;

case "CA":

    await dc.Context.SendActivityAsync("California is the most populated state in the US.");

    break;

default:

    await dc.Context.SendActivityAsync($"{entity} sounds like a nice state.");

    break;

}
Depending on the intents you've incorporated your list entity into, this could produce the following result:
[image]https://user-images.githubusercontent.com/41968495/57028875-12ea1100-6bf5-11e9-8f32-76cedcf4b3e3.png
Does this resolve your issue?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/Microsoft/AI/issues/1196#issuecomment-488338290, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABMHDSR6FM6YRDKIQIPG4ITPTHCO7ANCNFSM4HJLQBMA.

@mlipinski - I'm glad to hear your issue has been resolved


Demo App available in the US App Store only

Is there any rational reason why the demo app is available on the US App Store only?

The demo app will no longer be uploaded to app store.


Prevented renovate from auto-merging to master

Followup PR to fix issue that is caused by the recent renovate automerges: https://github.com/elifesciences/enhanced-preprints-server/pull/604

We should disable automerge until we have improved the tests. We should consider disabling automerge for other repo's until we have an improved level of test coverage.

This was a build failure, not a test failure:

Renovate responded to a node version release and maintains the tag suffix (in this case, the alpine version) because that's what you should do in the crazy world of docker versioning.
In the meantime, somewhere between node 16.18-16.19, the alpine version fell out of support
node don't release images for out-of-support OS image.
support).

The result is that docker can't build the image because the tag doesn't exist. If it did, it would mostly likely build fine.
What we should do to "test" for this is build the docker image in all PRs, but that will add more time to all PRs.

@scottaubrey I agree. I think we should expand the tests to include a build run.
https://github.com/elifesciences/enhanced-preprints-server/pull/605

I did toy with the idea to only test the build if there are changes to the Dockerfile.